<?php // triangle 数をある程度記憶しておく。 // 14文字が最長なので、14*26 = 364 までtriangle 数を記憶しておけばそれ以上の数はない。 $triangle = array(); for($i = 1 ; $i * ($i + 1 ) / 2 < 364 ; $i++) { $triangle[] = $i * ($i + 1) / 2; } $answer = 0; // ファイルの読み込み $file = file_get_contents("problem42.txt"); $array1 = explode(",",str_replace("\"","",$file)); $alphabet = array("A"=>1,"B"=>2,"C"=>3,"D"=>4,"E"=>5,"F"=>6,"G"=>7,"H"=>8,"I"=>9,"J"=>10,"K"=>11,"L"=>12,"M"=>13,"N"=>14,"O"=>15,"P"=>16,"Q"=>17,"R"=>18,"S"=>19,"T"=>20,"U"=>21,"V"=>22,"W"=>23,"X"=>24,"Y"=>25,"Z"=>26); foreach($array1 as $v) { $tmp = 0; $length = strlen($v); for($i = 0 ; $i < $length ; $i++) { $tmp += $alphabet[substr($v,$i,1)]; } if(array_search($tmp,$triangle) !== FALSE) { $answer++; } } echo $answer ; ?>