From: Marcello Henrique Date: 2011-01-14T23:54:18+09:00 Subject: Ruby iterative depth. --0015174bdc94d4f0d00499cf9a12 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello, Short question: How to make an iterative method of stack? Long explanation: I'm trying to create an iterative method for following structure: class Obj attr_accessor: id,: parent_id def initialize (id, parent_id) parent_id =3D @ parent_id @ id =3D id end def to_s "id: # {@ id}, parent_id: @ # {parent_id} ' end end left =3D [Obj.new (1.0), Obj.new (2.1), Obj.new (3.2), Obj.new (4.0), Obj.new (5.1), Obj new (6.1), Obj.new (7.3)] My challenge is to make an iterative method, see how far I got: def menu_iterative (menu) res =3D [] el1 =3D menu.shift res << el1 while not menu.empty? res_aux =3D [] for i in menu if el1.id =3D=3D i.parent_id print el1, "=3D=3D" i "* ", res_aux.index (el1), "\ n" res_aux << i el1 =3D menu.delete (i) retry else print el1, "! =3D" i, "\ n" end end res << res_aux unless res_aux.empty? puts el1 =3D menu.shift res << el1 end return res end puts "result:" pp menu_iterative (left_it) I wish the outcome was: [#, [#, [#, [#]], [#]], [#, #, #]] It seems that the problem is attribution without stack, correct? I'm attaching all I did. Thanks for any help. --=20 Marcello Henrique Blog - http://faraohh.wordpress.com Associa=E7=E3o Software Livre de Goi=E1s (www.aslgo.org.br) Cercomp - UFG (www.cercomp.ufg.br) --0015174bdc94d4f0d00499cf9a12 Content-Type: application/x-ruby; name="menus.rb" Content-Disposition: attachment; filename="menus.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gix7kc8s0 IyEvdXNyL2Jpbi9ydWJ5CnJlcXVpcmUgJ3BwJwoKIyBDbGFzc2VzIHRvIHNpbXVsYXRlIG9iamVj dHMKY2xhc3MgT2JqCiAgYXR0cl9hY2Nlc3NvciA6aWQsIDpwYXJlbnRfaWQKCiAgZGVmIGluaXRp YWxpemUoaWQsIHBhcmVudF9pZCkKICAgIEBwYXJlbnRfaWQgPSBwYXJlbnRfaWQKICAgIEBpZCA9 IGlkCiAgZW5kCgogIGRlZiB0b19zCiAgICAiaWQ6I3tAaWR9LCBwYXJlbnRfaWQ6I3tAcGFyZW50 X2lkfSAiCiAgZW5kCgogICMgUHJvY3VyYSBwZWxvIGlkIGRlIHVtIGZpbGhvIChpZCkgZW0gdW0g ZGFkbyB2ZXRvciAoYXJyKQogIGRlZiBPYmouc2VhcmNoX3NvbihpZCwgYXJyKQogICAgcmVzdWx0 ID0gW10KICAgIGkgPSAwCiAgICB3aGlsZSBpIDwgYXJyLnNpemUKICAgICAgYSA9IGFycltpXQog ICAgICBpZiBpZCA9PSBhLnBhcmVudF9pZAogICAgICAgIHJlc3VsdCA8PCBhCiAgICAgICAgYXJy LmRlbGV0ZShhKQogICAgICAgIHJlc190ZXN0ID0gc2VhcmNoX3NvbihhLmlkLCBhcnIpCiAgICAg ICAgcmVzdWx0IDw8IHJlc190ZXN0IHVubGVzcyByZXNfdGVzdC5lbXB0eT8KICAgICAgZWxzZQog ICAgICAgIGkgPSBpICsgMQogICAgICBlbmQKICAgIGVuZAogICAgcmV0dXJuIHJlc3VsdAogIGVu ZAplbmQKCiMgVGVzdHMgY2FzZXMKbGVmdCA9IFtPYmoubmV3KDEsMCksIE9iai5uZXcoMiwxKSwg T2JqLm5ldygzLDIpLCBPYmoubmV3KDQsMCksIE9iai5uZXcoNSwxKSwgT2JqLm5ldyg2LDEpLCBP YmoubmV3KDcsMyldCgpwdXRzICJPcmlnaW5hbDoiCnBwIGxlZnQKCiMgTcOpdG9kb3MgYnVzY2Eg ZW0gcHJvZnVuZGlkYWRlIHJlY3Vyc2l2bwpkZWYgc2VhcmNoX3Nvbm4oc2VhcmNoLCBhcnIpCiAg cmVzdWx0ID0gW10KICBpPTAKICB3aGlsZSBpIDwgYXJyLnNpemUKICAgIGEgPSBhcnJbaV0KICAg IGlmIHNlYXJjaCA9PSBhLmlkCiAgICAgIHJlc3VsdCA8PCBhCiAgICBlbmQKICAgIGkrPTEKICBl bmQKICByZXR1cm4gcmVzdWx0CmVuZAoKZGVmIG1lbnVfdHJlYXQob2JqKQogIG9ial9hdXggPSBv YmouY2xvbmUKICByMSA9IFtdCiAKICBpPTAKICB3aGlsZSBub3Qgb2JqLmVtcHR5PwogICAgaj0w CiAgICByMiA9IFtdCiAgICBsID0gb2JqLnNoaWZ0CiAgICB3aGlsZSBub3Qgb2JqX2F1eC5lbXB0 eT8KICAgICAgbSA9IG9ial9hdXguc2hpZnQKICAgICAgaWYgbC5pZCA9PSBtLnBhcmVudF9pZAog ICAgICAgIHIxIDw8IGwgdW5sZXNzIHIxLmluY2x1ZGU/KGwpCiAgICAgICAgcmVzX3Rlc3QgPSBt ZW51X3RyZWF0KG9iaikKICAgICAgICByMSA8PCByZXNfdGVzdCB1bmxlc3MgcmVzX3Rlc3QuZW1w dHk/CiAgICAgICAgcjIgPDwgbSAKICAgICAgZW5kCiAgICAgIGorPTEKICAgIGVuZAogICAgcjEg PDwgcjIgdW5sZXNzIHIyLmVtcHR5PwogICAgaSs9MQogIGVuZAogIHJldHVybiByMQplbmQKCnB1 dHMgIkNoYW5nZWQgUmVjdXJzaXZlOiIKbGVmdF9jbG9uZSA9IGxlZnQuY2xvbmUKbW0gPSBtZW51 X3RyZWF0KGxlZnRfY2xvbmUpCnBwIG1tCgojIE3DqXRvZG9zIGJ1c2NhIGVtIHByb2Z1bmRpZGFk ZSBpdGVyYXRpdm8KZGVmIG1lbnVfaXRlcmF0aXZlKG1lbnUpCiAgcmVzID0gW10KCiAgZWwxID0g bWVudS5zaGlmdAogIHJlcyA8PCBlbDEKICB3aGlsZSBub3QgbWVudS5lbXB0eT8KICAgIHJlc19h dXggPSBbXQogICAgZm9yIGkgaW4gbWVudQogICAgICBpZiBlbDEuaWQgPT0gaS5wYXJlbnRfaWQK ICAgICAgICBwcmludCBlbDEsIiA9PSAiLGksIiogIixyZXNfYXV4LmluZGV4KGVsMSksIlxuIgog ICAgICAgIHJlc19hdXggPDwgIGkKICAgICAgICBlbDEgPSBtZW51LmRlbGV0ZShpKQogICAgICAg IHJldHJ5CiAgICAgIGVsc2UKICAgICAgICBwcmludCBlbDEsIiAhPSAiLGksIiBcbiIKICAgICAg ZW5kCiAgICBlbmQKICAgIHJlcyA8PCByZXNfYXV4IHVubGVzcyByZXNfYXV4LmVtcHR5PwogICAg cHV0cwogICAgZWwxID0gbWVudS5zaGlmdAogICAgcmVzIDw8IGVsMQogIGVuZAogIHJldHVybiBy ZXMKZW5kCgpsZWZ0X2l0ID0gbGVmdC5kdXAKcHV0cyAiQ2hhbmdlZCBJdGVyYXRpdmU6IgpwdXRz ICJyZXN1bHQ6IgpwcCBtZW51X2l0ZXJhdGl2ZShsZWZ0X2l0KQo= --0015174bdc94d4f0d00499cf9a12--