I was asked to figure out all of the different ways you can add up various
combinations of the digits 1 through 9 to create different totals. For
instance, you can get 8 by adding 1+7 or 2+5 or 3+4 or 1+2+4 (for each
addition, each numeral can only be used once.) I wrote this code to
generate all of the values, but as you can see I resorted to doing it by
first figuring out all of the 2-digit combinations, and then all of the
3-digit combinations, ...all the way up to nine. It strikes me that this
could have been more elegantly done with some sort of recursive function,
but I couldn't figure out how. Any ideas? Thanks in advance, one and all,
here's my original code....
#!/usr/bin/perl
for ($z = 3; $z <= 45; $z++) {
print "\n";
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <=9; $j++) {
if($i != $j) {
if($i + $j == $z) {
print $i + $j, " = $i + $j", "\n";
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <=9; $j++) {
for ($k = $j + 1; $k <=9; $k++) {
if(($i != $j) && ($j != $k)) {
if($i + $j + $k == $z) {
print $i + $j + $k, " = $i + $j +
$k\n";
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
if(($i != $j) && ($j != $k) && ($k != $l)) {
if($i + $j + $k + $l == $z) {
print $i + $j + $k + $l, " =
$i + $j + $k + $l\n";
}
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
for ($m = $l + 1; $m <= 9; $m++) {
if(($i != $j) && ($j != $k) && ($k
!= $l) && ($l != $m)) {
if($i + $j + $k + $l + $m ==
$z) {
print $i + $j + $k +
$l +$m, " = $i + $j + $k + $l + $m\n";
}
}
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
for ($m = $l + 1; $m <= 9; $m++) {
for ($n = $m + 1; $n <= 9; $n++) {
if(($i != $j) && ($j != $k)
&& ($k != $l) && ($l != $m) && ($m != $n)) {
if($i + $j + $k + $l
+ $m + $n == $z) {
print $i +
$j + $k + $l + $m + $n, " = $i + $j + $k + $l + $m + $n\n";
}
}
}
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
for ($m = $l + 1; $m <= 9; $m++) {
for ($n = $m + 1; $n <= 9; $n++) {
for ($o = $n + 1; $o <= 9;
$o++) {
if(($i != $j) && ($j
!= $k) && ($k != $l) && ($l != $m) && ($m != $n) && ($o != $m)) {
if($i + $j +
$k + $l + $m + $n + $o == $z) {
print $i + $j + $k + $l + $m + $n + $o, " = $i + $j + $k + $l + $m + $n +
$o\n";
}
}
}
}
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
for ($m = $l + 1; $m <= 9; $m++) {
for ($n = $m + 1; $n <= 9; $n++) {
for ($o = $n + 1; $o <= 9;
$o++) {
for ($p = $o + 1; $p
<= 9; $p++) {
if(($i !=
$j) && ($j != $k) && ($k != $l) && ($l != $m) && ($m != $n) && ($n != $o) &&
($o != $p)) {
if($i + $j + $k + $l + $m + $n + $o + $p == $z) {
print $i + $j + $k + $l + $m + $n + $o + $p, " = $i + $j + $k + $l + $m + $n
+ $o + $p\n";
}
}
}
}
}
}
}
}
}
}
for ($i = 1; $i <= 9; $i++ ) {
for ($j = $i + 1; $j <= 9; $j++) {
for ($k = $j + 1; $k <= 9; $k++) {
for ($l = $k + 1; $l <= 9; $l++) {
for ($m = $l + 1; $m <= 9; $m++) {
for ($n = $m + 1; $n <= 9; $n++) {
for ($o = $n + 1; $o <= 9;
$o++) {
for ($p = $o + 1; $p
<= 9; $p++) {
for ($q = $p
+ 1; $q <= 9; $q++) {
if(($i != $j) && ($j != $k) && ($k != $l) && ($l != $m) && ($m != $n) && ($n
!= $o) && ($o != $p) && ($p != $q)) {
if($i + $j + $k + $l + $m + $n + $o + $p + $q == $z) {
print $i + $j + $k + $l + $m + $n + $o + $p + $q, " = $i + $j + $k + $l + $m
+ $n + $o + $p + $q\n";
}
}
}
}
}
}
}
}
}
}
}
}
____________________
Chris Spurgeon
Senior Design Technologist
[EMAIL PROTECTED]
ELECTRONIC INK
One South Broad Street
19th Floor
Philadelphia, PA 19107
www.electronicink.com
t 215.922.3800 x(233)
f 215.922.3880
This e-mail is intended solely for the above-mentioned recipient and it may
contain confidential or privileged information. If you have received it in
error, please notify us immediately and delete the e-mail. You must not
copy, distribute, disclose or take any action in reliance on it. In
addition, the contents of an attachment to this e-mail may contain software
viruses which could damage your own computer system. While Electronic Ink,
Inc. and E Ink Ltd have taken every reasonable precaution to minimize this
risk, we cannot accept liability for any damage which you sustain as a
result of software viruses. You should perform your own virus checks before
opening the attachment.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]