입력 7|12|1|14|2|13|8|11|16|3|10|5|9|6|15|4
은 PHP 코드로 0을 반환하고 Python 코드는 1을 반환합니다. 1은 4x4 마술 사각형의 합계가 동일 함을 의미하고 0은 반대입니다. 파이썬 코드가 맞습니다.파이썬 코드를 PHP로 변환 할 때의 논리 버그 찾기
PHP 코드의 문제점은 이을 -loop로 나누기 때문에 PHP가 너무 많은 합계를 제공하기 때문에 발생합니다.
PHP 코드의 논리는 어떻게 파이썬의과 다른가요?
PHP
$data = "7|12|1|14|2|13|8|11|16|3|10|5|9|6|15|4";
$array = explode("|", $data);
# Calculate the unique sums of the four figures
# @return array int
function divide ($array) {
$sum = array_map('array_sum', array_chunk($array, 4));
$apu_a = array();
for ($i = 0; $i < count($sum); $i++) {
if ($i % 5 == 0)
$apu_a []= $array[$i];
}
$sum []= array_sum($apu_a);
$apu_a = array();
for ($i = 0; $i < count($sum); $i++) {
if ($i % 3 == 0 and $i != 15 and $i != 0)
$apu_a []= $array[$i];
}
$sum []= array_sum($apu_a);
$result = array_unique($sum);
return $result;
}
파이썬 코드에서 파이썬
data = "7|12|1|14|2|13|8|11|16|3|10|5|9|6|15|4"
lista = map(int,data.split("|"))
def divide(lista):
summat = [sum(lista[i:i+4]) for i in range(0,len(lista),4)]
summat += [sum(lista[0::5]) for i in range(0, len(lista), 16)]
summat += [sum(a for i,a in enumerate(lista) if i %3==0 and i != 15 and i != 0)]
return set(summat)
논리 버그는 PHP로 변환한다는 사실입니다. 그건 논리적 인 문제가 아닙니다! ;) – ThiefMaster