Sep 18
Мдя, решений моей задачки вообще нет. Неинтересно так. :(
Мое решение:
$filename = "test.txt";
class Tree {
var $children = array();
var $level;
var $name;
}
function display($tree) {
// кто знает, как вывести n строк подряд - подскажите
for($i = 0; $i < $tree->level; $i++) echo "\\t";
echo $tree->name . "n";
foreach($tree->children as &$child)
display($child);
}
$root = new Tree();
$root->level = -1;
$nodes = array($root);
foreach(file($filename) as $record)
{
$record = preg_replace('/\\n|\\r\\n/', '', $record);
list($id, $parent_id, $name) = explode('|', $record);
$parent = $nodes[$parent_id];
$node = new Tree();
$node->level = $parent->level + 1;
$node->name = $name;
$parent->children[] = $node;
$nodes[$id] = $node;
}
foreach($root->children as $child)
display($child);





September 19th, 2007 at 04:48
Вот моё решение на Python. Делал только что в полпятого утра, так что уж извините за корявость :)
September 19th, 2007 at 05:37
Решение не катит:
1. На один отступ больше. Ну это еще ладно. :)
2. Посмотри на свою выдачу и сравни с моей. Особенно обрати внимание на Nikon и Canon ;) Да и TV не там, где нужно.
September 25th, 2007 at 10:05
может уже не актуально, но все таки
// кто знает, как вывести n строк подряд - подскажите
print str_repeat(”\t”, $tree->level);
И еще вопрос: зачем использовать класс? Я сам всеми руками и ногами за, но для этой тривиальной задачи мне кажется можно было обойтись и массивом array(’name’, ‘children’, ‘level’);
September 25th, 2007 at 12:17
Ага, благодарю.
А я не знаю, как можно не юзая Древовидную структуру решить задачу за линейное время.