
updated on 2019-02-04
あなたはデータ入力の作業を行っています。
この入力するデータは "0000" から "1111" までの 2 進数です。
このデータ入力の作業は単調でミスを起こしやすく困っています。
このため、入力するデータに対してある計算をし検証をすることにしました。
ここでは排他的論理和(xor) と呼ばれる計算を使って入力データのミスを検出しようとしました。
排他的論理和(xor) は各桁において、1 が奇数個あれば 1、そうでないならば 0 を出力します。
入力する N 個のデータに対して、排他的論理和(xor) を取って出力をしてください。
入力例 1 の場合は、各桁に対して以下のように計算されます。

入力例2
4
0001
0010
0100
1000解答
<?php
$input_lines = trim(fgets(STDIN));
if (strlen($input_lines)!=4) {
for ($i = 0; $i < $input_lines; $i++) {
$num = trim(fgets(STDIN));
$num = str_replace(array("\r\n","\r","\n"), '', $num); // 改行文字の除去
$num1[] = substr($num, -1, 1);
$num2[] = substr($num, -2, 1);
$num3[] = substr($num, -3, 1);
$num4[] = substr($num, -4, 1);
}
$num1Sum=$num2Sum=$num3Sum=$num4Sum=0;
foreach($num4 as $num4) {
$num4Sum += $num4; // 4桁目の合計
}
$sum[] = $num4Sum;
foreach($num3 as $num3) {
$num3Sum += $num3; // 3桁目の合計
}
$sum[] = $num3Sum;
foreach($num2 as $num2) {
$num2Sum += $num2; // 2桁目の合計
}
$sum[] = $num2Sum;
foreach($num1 as $num1) {
$num1Sum += $num1; // 1桁目の合計
}
$sum[] = $num1Sum;
foreach ($sum as $key => $value) {
if($value%2==0) {
echo 0;
}else{
echo 1;
}
}
} else if (strlen($input_lines)==4){
echo $input_lines;
}