2016-07-22 7 views
2

fand ich eine Frage auf Google wie folgt aus:Wie macht man Dreieck-Roll-Up mit PHP?

Wenn die Eingabe gegeben: 4, 7, 3, 6, 7

Die Ausgabe wie folgt aus:

81 

40 41 

21 19 22 

11 10 9 13 

4 7 3 6 7 

Ich mag nur versuchen können, die dies:

for($i = 1; $i<=5;$i++){ 
    for($j=0; $j<$i; $j++){ 
     echo "4"; 
    } 
    echo "<br/>"; 
} 

die nächste ich bin verwirrt

Irgendeine Lösung, um mein Problem zu lösen?

+0

ein Array der Ergebnisse beim Aufbau, Reverse das Array, Schleife dann über dieses Array, um die Werte zu wiederholen –

Antwort

3
<?php 

$input = array(4, 7, 3, 6, 7); 
$lines = rollup($input); 

function rollup ($input) { 
    $return = array(); 
    $line = array(); 
    if (count($input) > 0) { 
     foreach ($input as $k=>$v) { 
      if (isset($input[$k+1])) 
       $line[] = $v + $input[$k+1]; 
     } 
     $return = implode(' ', $input); 
     rollup($line); 
    } 
    if (!empty($return)) 
     echo $return . '<br />'; 
} 

?> 
1

können Sie diesen Code verwenden

<?php 
$arr = [4, 7, 3, 6, 7]; 
$count = count($arr); 
$finalStr = ""; 
while($count>0){ 
    $str = ""; 
    foreach($arr as $key=>$val){ 
    $arr[$key] = $arr[$key]+$arr[$key+1]; 
    $str .="$val "; 
    } 
    $str .= "\n"; 
    $finalStr = $str . $finalStr; 
    unset($arr[count($arr)-1]); 

    $count--; 
} 
echo $finalStr; 
?> 

prüfen Live-Demo: https://eval.in/609908

Ausgang ist:

81 
40 41 
21 19 22 
11 10 9 13 
4 7 3 6 7 
1

Try this,

<?php 
$a = 4; 
$b = 7; 
$c = 3; 
$d = 6; 
$e = 7; 
for($y = 1; $y<=5;$y++){ 
    for($z=0; $z<$y; $z++){ 
     $f = $a+$b; 
     $g = $b+$c; 
     $h = $c+$d; 
     $i = $d+$e; 
     $j = $f+$g; 
     $k = $g+$h; 
     $l = $h+$i; 
     $m = $j+$k; 
     $n = $k+$l; 
     $o = $m+$n; 
    } 
} 
echo $o.'<br/>'; 
echo $m.' '.$n.'<br/>'; 
echo $j.' '.$k.' '.$l.'<br/>'; 
echo $f.' '.$g.' '.$h.' '.$i.'<br/>'; 
echo $a.''.$b.' '.$c.' '.$d.' '.$e; 
?> 
1

einfach eine andere Lösung zu geben, weil ich wie diese ‚Puzzler‘ mögen, gebe ich Ihnen dies:

<pre> 
<?php 
    //init 
    $input = [4, 7, 3, 6, 7]; 
    $output = [$input]; 

    //process 
    while(count($input) > 1) { 
     foreach($input as $key => $val) { 
      $key ? $input[] = $val + $prev : $input = array(); 
      $prev = $val;  
     } 
     array_unshift($output, $input); 
    } 

    //output  
    array_walk($output, function($line){ 
     echo implode(' ', $line) . "\n"; 
    }); 
?> 
</pre> 

anzeigen Arbeits here