Skip to content

Instantly share code, notes, and snippets.

@ounziw
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ounziw/2f3cd792557111bf2592 to your computer and use it in GitHub Desktop.
Save ounziw/2f3cd792557111bf2592 to your computer and use it in GitHub Desktop.
nagoya php 第7回のどうかく?問題。 ルートを記述しておく、という方法(プログラムはほとんど関係ない方法)
function check_route($input) {
$data = array(
'14' => array('abc', 'gc', 'gh'),
'15' => array('ab', 'ge'),
'16' => array('abc', 'gc', 'ghi'),
'24' => array('dc', 'h'),
'25' => array('de'),
'26' => array('dc', 'hi'),
'34' => array('bc', 'fgc', 'fgh'),
'35' => array('b', 'fge'),
'36' => array('bc', 'fgc', 'fghi'),
);
// 通れないところが入力される
$input_array = str_split($input); // array('a','b','c')
$output = array();
foreach ($data as $route_key => $route_way) {
foreach ($route_way as $arr) {
$ok = true;
foreach ($input_array as $str) {
if (strpos($arr, $str) !== false) {
$ok = false;
}
}
if ($ok) {
$output[] = $route_key;
}
}
}
$output = array_unique($output);
if (count($output)) {
return implode(',',$output);
} else {
return '-';
}
}
<?php
include 'check_route.php';
class CheckrouteTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider provider
*/
function testCheckroute($input, $output) {
$result = check_route($input);
$this->assertEquals($output,$result);
}
function provider() {
return array(
/*0*/ array( "befi", "14,16,24,26" ),
/*1*/ array( "abc", "14,15,16,24,25,26,34,35,36" ),
/*2*/ array( "de", "14,15,16,24,26,34,35,36" ),
/*3*/ array( "fghi", "14,15,16,24,25,26,34,35,36" ),
/*4*/ array( "abcdefghi", "-" ),
/*5*/ array( "ag", "24,25,26,34,35,36" ),
/*6*/ array( "dh", "14,15,16,34,35,36" ),
/*7*/ array( "bf", "14,15,16,24,25,26" ),
/*8*/ array( "ch", "15,25,35" ),
/*9*/ array( "be", "14,16,24,26,34,36" ),
/*10*/ array( "ci", "14,15,24,25,34,35" ),
/*11*/ array( "cgi", "15,24,25,35" ),
/*12*/ array( "acgi", "24,25,35" ),
/*13*/ array( "cdefghi", "15,35" ),
/*14*/ array( "acdefghi", "35" ),
/*15*/ array( "cdegi", "15,24,35" ),
/*16*/ array( "bcdegi", "24" ),
/*17*/ array( "afh", "14,15,16,24,25,26,34,35,36" ),
/*18*/ array( "abfh", "14,15,16,24,25,26" ),
/*19*/ array( "dfh", "14,15,16,34,35,36" ),
/*20*/ array( "cdfh", "15,35" ),
/*21*/ array( "deh", "14,15,16,34,35,36" ),
/*22*/ array( "cdeh", "15,35" ),
/*23*/ array( "abefgh", "24,26" ),
/*24*/ array( "abdefgh", "-" ),
/*25*/ array( "acfghi", "25,35" ),
/*26*/ array( "acdfghi", "35" ),
/*27*/ array( "cegi", "15,24,35" ),
/*28*/ array( "abcfhi", "15,25" ),
/*29*/ array( "abcefhi", "-" ),
/*30*/ array( "abdi", "14,15,16,24,34,35,36" ),
/*31*/ array( "abdfi", "14,15,16,24" ),
/*32*/ array( "bdi", "14,15,16,24,34,35,36" ),
/*33*/ array( "bdfi", "14,15,16,24" ),
/*34*/ array( "adfh", "14,15,16,34,35,36" ),
/*35*/ array( "adfgh", "34,35,36" ),
/*36*/ array( "acdfhi", "15,35" ),
/*37*/ array( "bcdfgi", "24" ),
/*38*/ array( "bcdfghi", "-" ),
/*39*/ array( "defi", "14,15,16,24,34,35,36" ),
/*40*/ array( "defhi", "14,15,16,34,35,36" ),
/*41*/ array( "cdefg", "15,24,26,35" ),
/*42*/ array( "cdefgi", "15,24,35" ),
/*43*/ array( "bdefg", "24,26" ),
/*44*/ array( "bdefgi", "24" ),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment