diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-05-26 02:05:34 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-05-26 02:05:34 -0400 |
commit | fad35a892eca5bff5824f6bd4ddf889b2aae7f8d (patch) | |
tree | 5b3d3297c54d7553df9c716406ebec67ff2dd755 /bin/smt_fusion | |
parent | 8daee7509476687c3ba3b28eab1bd1e4e8e3d1e6 (diff) | |
download | games-smtnocturne-demons-fad35a892eca5bff5824f6bd4ddf889b2aae7f8d.tar.gz games-smtnocturne-demons-fad35a892eca5bff5824f6bd4ddf889b2aae7f8d.zip |
command to see what all we can fuse from a set of demons
Diffstat (limited to 'bin/smt_fusion')
-rw-r--r-- | bin/smt_fusion | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/smt_fusion b/bin/smt_fusion index aeee940..096bd5a 100644 --- a/bin/smt_fusion +++ b/bin/smt_fusion @@ -53,3 +53,29 @@ sub min_level_for { print "Level $min_level:\n"; print join("\n", @min_level_fusions), "\n"; } + +sub party_fusion { + my @demons = @_; + my $seen = _party_fusion_recursive_fuse({}, map { _demon($_) } @demons); + print join("\n", map { _demon($_) } sort { $a cmp $b } keys %$seen), "\n"; +} +sub _party_fusion_recursive_fuse { + my ($seen, @demons) = @_; + + $seen->{$_} = 1 for map { $_->name } @demons; + + if (@demons > 1) { + for my $demon1 (@demons) { + for my $demon2 (grep { $_ ne $demon1 } @demons) { + my $fused = _fuse($demon1, $demon2); + next unless $fused; + my @new_party = ( + $fused, grep { $_ ne $demon1 && $_ ne $demon2 } @demons + ); + _party_fusion_recursive_fuse($seen, @new_party); + } + } + } + + return $seen; +} |