Created
September 4, 2014 05:17
-
-
Save anonymous/5aa8c0d7b4c99d75da35 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(gdb) bt | |
#0 0x00007ffff79a453b in MVM_gc_root_add_frame_roots_to_worklist () from /home/larry/nom/install/lib/libmoar.so | |
#1 0x00007ffff79a36bd in MVM_gc_worklist_mark_frame_roots () from /home/larry/nom/install/lib/libmoar.so | |
#2 0x00007ffff79a514a in process_worklist () from /home/larry/nom/install/lib/libmoar.so | |
#3 0x00007ffff79a53b4 in MVM_gc_collect () from /home/larry/nom/install/lib/libmoar.so | |
#4 0x00007ffff79a2a13 in run_gc () from /home/larry/nom/install/lib/libmoar.so | |
#5 0x00007ffff79a3238 in MVM_gc_enter_from_allocator () from /home/larry/nom/install/lib/libmoar.so | |
#6 0x00007ffff79a3361 in MVM_gc_allocate_nursery () from /home/larry/nom/install/lib/libmoar.so | |
#7 0x00007ffff79a33ad in MVM_gc_allocate_zeroed () from /home/larry/nom/install/lib/libmoar.so | |
#8 0x00007ffff79a34ed in MVM_gc_allocate_object () from /home/larry/nom/install/lib/libmoar.so | |
#9 0x00007ffff79b056b in MVM_repr_alloc_init () from /home/larry/nom/install/lib/libmoar.so | |
#10 0x00007ffff580ec20 in p6listitems () from /home/larry/nom/install/languages/perl6/runtime/dynext/libperl6_ops_moar.so | |
#11 0x00007ffff798b0b7 in MVM_interp_run () from /home/larry/nom/install/lib/libmoar.so | |
#12 0x00007ffff79f5e23 in MVM_vm_run_file () from /home/larry/nom/install/lib/libmoar.so | |
#13 0x0000000000400f26 in main () | |
This is from: | |
{ | |
multi sub cbal-tree(0){ Any } | |
multi sub cbal-tree(Int $n) { | |
my @r; | |
do { | |
if $n % 2 == 1 { | |
my $k = ($n - 1) div 2; | |
for cbal-tree($k) -> $a { | |
for cbal-tree($k) -> $b { | |
@r.push: ['x', $a, $b]; | |
} | |
} | |
} else { | |
my $k = $n div 2; | |
for cbal-tree($k) -> $a { | |
for cbal-tree($k - 1) -> $b { | |
@r.push: ['x', $a, $b]; | |
} | |
} | |
for cbal-tree($k - 1) -> $a { | |
for cbal-tree($k) -> $b { | |
@r.push: ['x', $a, $b]; | |
} | |
} | |
} | |
} | |
@r; | |
} | |
say +cbal-tree(4); | |
} | |
{ | |
sub heights(Any $x) { | |
return 0 unless $x; | |
my @results; | |
do { | |
for heights($x[1]) { @results.push: 1 + $_ }; | |
for heights($x[2]) { @results.push: 1 + $_ }; | |
} | |
@results; | |
} | |
sub is-hbal($x) { | |
my @heights = heights($x).sort; | |
@heights[*-1] - @heights[0] <= 1; | |
} | |
multi sub hbal-tree(0) { Any } | |
multi sub hbal-tree(1) { ['x', Any, Any] } | |
multi sub hbal-tree(Int $n) { | |
gather { | |
for hbal-tree($n - 1) -> $a { | |
for hbal-tree($n - 1) -> $b { | |
take ['x', $a, $b]; | |
} | |
for hbal-tree($n - 2) -> $b { | |
if is-hbal(['x', $a, $b]) { | |
take ['x', $a, $b]; | |
take ['x', $b, $a]; | |
} | |
} | |
} | |
} | |
} | |
my @results = hbal-tree(3); | |
for ^15 { | |
say is-hbal(@results[$_]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment