Trafficsamples.pas

Un article de Wikipedia.

Solution minimale du jeu Traffic!

  1. function initplateau(n:byte):plistebloc;
  2. type tableau=array [1..18] of string;
  3. var s:tableau;
  4. i:byte;
  5. function conversion:plistebloc;
  6. var lb:plistebloc;
  7. k:byte;
  8. procedure ajoute(v:string);
  9. var t:taille;
  10. dir:direction;
  11. g:genre;
  12. x,y:byte;
  13. begin
  14. x:=StringToInt(v[1]);
  15. y:=StringToInt(v[2]);
  16. case v[3] of
  17. 'h': dir:=hori;
  18. 'v': dir:=verti;
  19. end;
  20. case v[4] of
  21. '2': t:=deux;
  22. '3': t:=trois;
  23. end;
  24. case v[5] of
  25. 'n': g:=normal;
  26. 'p': g:=principal;
  27. end;
  28. lb := ajouterbloc(lb,creerbloc(x,y,dir,t,g));
  29. end;
  30. begin
  31. lb:=nil;
  32. for k:=1 to 18 do
  33. begin
  34. if length(s[k]) <> 0 then
  35. begin
  36. if s[k][5] = 'n' then
  37. ajoute(s[k]);
  38. end;
  39. end;
  40. for k:=1 to 18 do
  41. begin
  42. if length(s[k]) <> 0 then
  43. begin
  44. if s[k][5] = 'p' then
  45. ajoute(s[k]);
  46. end;
  47. end;
  48. conversion:=lb;
  49. end;
  50. begin
  51.  
  52. for i:=1 to 18 do
  53. s[i]:='';
  54.  
  55. case n of
  56. 0:
  57. begin
  58. s[1]:='14h2p';
  59. s[2]:='34v2n';
  60. end;
  61. 1:
  62. begin
  63. s[1]:='11v2n';
  64. s[2]:='31h3n';
  65. s[3]:='52h2n';
  66. s[4]:='13v3n';
  67. s[5]:='43v3n';
  68. s[6]:='24h2p';
  69. s[7]:='64v3n';
  70. s[8]:='16h2n';
  71. end;
  72. 2:
  73. begin
  74. s[1]:='11h2n';
  75. s[2]:='31v2n';
  76. s[3]:='41h2n';
  77. s[4]:='52h2n';
  78. s[5]:='13h3n';
  79. s[6]:='53v2n';
  80. s[7]:='63v3n';
  81. s[8]:='14h2p';
  82. s[9]:='44v2n';
  83. s[10]:='15v2n';
  84. s[11]:='46h3n';
  85. end;
  86. 3:
  87. begin
  88. s[1]:='21v2n';
  89. s[2]:='31h2n';
  90. s[3]:='61v3n';
  91. s[4]:='42v3n';
  92. s[5]:='23h2n';
  93. s[6]:='24h2p';
  94. end;
  95. 4:
  96. begin
  97. s[1]:='31h3n';
  98. s[2]:='61v2n';
  99. s[3]:='32v2n';
  100. s[4]:='43h3n';
  101. s[5]:='14v3n';
  102. s[6]:='24h2p';
  103. s[7]:='44v3n';
  104. end;
  105. 5:
  106. begin
  107. s[1]:='11v2n';
  108. s[2]:='51h2n';
  109. s[3]:='52h2n';
  110. s[4]:='13v2n';
  111. s[5]:='23h3n';
  112. s[6]:='53v3n';
  113. s[7]:='63v2n';
  114. s[8]:='24h2p';
  115. s[9]:='44v3n';
  116. s[10]:='65v2n';
  117. s[11]:='16h2n';
  118. end;
  119. 6:
  120. begin
  121. s[1]:='11v2n';
  122. s[2]:='41h3n';
  123. s[3]:='32v2n';
  124. s[4]:='42v3n';
  125. s[5]:='13h2n';
  126. s[6]:='53v3n';
  127. s[7]:='63v3n';
  128. s[8]:='24h2p';
  129. s[9]:='15h2n';
  130. s[10]:='45v2n';
  131. s[11]:='16h2n';
  132. end;
  133. 7:
  134. begin
  135. s[1]:='41v2n';
  136. s[2]:='33h2n';
  137. s[3]:='63v2n';
  138. s[4]:='24h2p';
  139. s[5]:='44v2n';
  140. s[6]:='25v2n';
  141. s[7]:='55v2n';
  142. s[8]:='65v2n';
  143. s[9]:='36h2n';
  144. end;
  145. 8:
  146. begin
  147. s[1]:='11h2n';
  148. s[2]:='31v2n';
  149. s[3]:='41h3n';
  150. s[4]:='12h2n';
  151. s[5]:='42h3n';
  152. s[6]:='13h2n';
  153. s[7]:='33v2n';
  154. s[8]:='43v2n';
  155. s[9]:='53h2n';
  156. s[10]:='14h2p';
  157. s[11]:='54v2n';
  158. s[12]:='64v3n';
  159. s[13]:='35h2n';
  160. s[14]:='46h2n';
  161. end;
  162. 9:
  163. begin
  164. s[1]:='11v2n';
  165. s[2]:='31v2n';
  166. s[3]:='61v2n';
  167. s[4]:='52v3n';
  168. s[5]:='23h3n';
  169. s[6]:='63v2n';
  170. s[7]:='14h2p';
  171. s[8]:='44v2n';
  172. s[9]:='25v2n';
  173. s[10]:='55h2n';
  174. s[11]:='36h2n';
  175. s[12]:='56h2n';
  176. end;
  177. 10:
  178. begin
  179. s[1]:='11h2n';
  180. s[2]:='41v2n';
  181. s[3]:='51h2n';
  182. s[4]:='12v3n';
  183. s[5]:='52h2n';
  184. s[6]:='23h3n';
  185. s[7]:='63v3n';
  186. s[8]:='24h2p';
  187. s[9]:='15h2n';
  188. s[10]:='35v2n';
  189. s[11]:='16h2n';
  190. s[12]:='56h2n';
  191. end;
  192. 11:
  193. begin
  194. s[1]:='31h3n';
  195. s[2]:='61v2n';
  196. s[3]:='32v2n';
  197. s[4]:='43h3n';
  198. s[5]:='14v3n';
  199. s[6]:='24h2p';
  200. s[7]:='44v3n';
  201. s[8]:='26h2n';
  202. end;
  203. 12:
  204. begin
  205. s[1]:='11h3n';
  206. s[2]:='51v2n';
  207. s[3]:='33v3n';
  208. s[4]:='43h3n';
  209. s[5]:='14h2p';
  210. s[6]:='64v3n';
  211. s[7]:='15v2n';
  212. s[8]:='26h2n';
  213. end;
  214. 13:
  215. begin
  216. s[1]:='11v3n';
  217. s[2]:='21h2n';
  218. s[3]:='41v2n';
  219. s[4]:='51h2n';
  220. s[5]:='52h2n';
  221. s[6]:='23v2n';
  222. s[7]:='43h2n';
  223. s[8]:='63v3n';
  224. s[9]:='34v2n';
  225. s[10]:='44h2p';
  226. s[11]:='55v2n';
  227. s[12]:='16h2n';
  228. s[13]:='36h2n';
  229. end;
  230. 14:
  231. begin
  232. s[1]:='11h2n';
  233. s[2]:='31v2n';
  234. s[3]:='52h2n';
  235. s[4]:='13v2n';
  236. s[5]:='23v2n';
  237. s[6]:='33h2n';
  238. s[7]:='53v2n';
  239. s[8]:='63v2n';
  240. s[9]:='34h2p';
  241. s[10]:='35v2n';
  242. s[11]:='55h2n';
  243. s[12]:='16h2n';
  244. end;
  245. 15:
  246. begin
  247. s[1]:='21h2n';
  248. s[2]:='41h2n';
  249. s[3]:='12v3n';
  250. s[4]:='22v3n';
  251. s[5]:='32v2n';
  252. s[6]:='42v2n';
  253. s[7]:='52h2n';
  254. s[8]:='53v3n';
  255. s[9]:='63v3n';
  256. s[10]:='34h2p';
  257. s[11]:='15h2n';
  258. s[12]:='35h2n';
  259. s[13]:='26h2n';
  260. s[14]:='46h2n';
  261. end;
  262. 16:
  263. begin
  264. s[1]:='11h2n';
  265. s[2]:='32v3n';
  266. s[3]:='23v2n';
  267. s[4]:='43h3n';
  268. s[5]:='14v2n';
  269. s[6]:='44h2p';
  270. s[7]:='64v3n';
  271. s[8]:='35h2n';
  272. s[9]:='55v2n';
  273. s[10]:='16h2n';
  274. s[11]:='36h2n';
  275. end;
  276. 17:
  277. begin
  278. s[1]:='11h3n';
  279. s[2]:='41v3n';
  280. s[3]:='51v2n';
  281. s[4]:='61v2n';
  282. s[5]:='13h2n';
  283. s[6]:='33v2n';
  284. s[7]:='14h2p';
  285. s[8]:='15v2n';
  286. s[9]:='35h2n';
  287. s[10]:='55h2n';
  288. s[11]:='26h3n';
  289. end;
  290. 18:
  291. begin
  292. s[1]:='11h3n';
  293. s[2]:='12v3n';
  294. s[3]:='22h2n';
  295. s[4]:='23h3n';
  296. s[5]:='24h2p';
  297. s[6]:='44v3n';
  298. s[7]:='15h2n';
  299. s[8]:='35v2n';
  300. s[9]:='16h2n';
  301. end;
  302. 19:
  303. begin
  304. s[1]:='12h3n';
  305. s[2]:='52v2n';
  306. s[3]:='23v2n';
  307. s[4]:='33h2n';
  308. s[5]:='34h2p';
  309. s[6]:='54v2n';
  310. s[7]:='35v2n';
  311. s[8]:='46h2n';
  312. end;
  313. 20:
  314. begin
  315. s[1]:='31v2n';
  316. s[2]:='41h3n';
  317. s[3]:='42h2n';
  318. s[4]:='62v3n';
  319. s[5]:='14h2p';
  320. s[6]:='44v2n';
  321. s[7]:='15v2n';
  322. s[8]:='25h2n';
  323. s[9]:='46h3n';
  324. end;
  325. 21:
  326. begin
  327. s[1]:='41h3n';
  328. s[2]:='13v3n';
  329. s[3]:='23h3n';
  330. s[4]:='24h2p';
  331. s[5]:='44v3n';
  332. s[6]:='35v2n';
  333. s[7]:='16h2n';
  334. end;
  335. 22:
  336. begin
  337. s[1]:='11v2n';
  338. s[2]:='21h3n';
  339. s[3]:='61v2n';
  340. s[4]:='22v2n';
  341. s[5]:='32h2n';
  342. s[6]:='43v3n';
  343. s[7]:='53h2n';
  344. s[8]:='14v2n';
  345. s[9]:='24h2p';
  346. s[10]:='35v2n';
  347. s[11]:='55h2n';
  348. s[12]:='46h3n';
  349. end;
  350. 23:
  351. begin
  352. s[1]:='31h3n';
  353. s[2]:='32v2n';
  354. s[3]:='42v2n';
  355. s[4]:='52h3n';
  356. s[5]:='53h3n';
  357. s[6]:='34v2n';
  358. s[7]:='44h2p';
  359. s[8]:='64v3n';
  360. s[9]:='45h2n';
  361. s[10]:='36h3n';
  362. end;
  363. 24:
  364. begin
  365. s[1]:='11h2n';
  366. s[2]:='51v2n';
  367. s[3]:='12h3n';
  368. s[4]:='13v2n';
  369. s[5]:='23h2n';
  370. s[6]:='53v2n';
  371. s[7]:='24v2n';
  372. s[8]:='34h2p';
  373. s[9]:='35v2n';
  374. s[10]:='46h2n';
  375. end;
  376. 25:
  377. begin
  378. s[1]:='21v2n';
  379. s[2]:='41v2n';
  380. s[3]:='51h2n';
  381. s[4]:='12v3n';
  382. s[5]:='52h2n';
  383. s[6]:='23h3n';
  384. s[7]:='53v2n';
  385. s[8]:='63v3n';
  386. s[9]:='24h2p';
  387. s[10]:='15h2n';
  388. s[11]:='35v2n';
  389. s[12]:='16h2n';
  390. s[13]:='56h2n';
  391. end;
  392. 26:
  393. begin
  394. s[1]:='31v2n';
  395. s[2]:='41h2n';
  396. s[3]:='61v2n';
  397. s[4]:='12v2n';
  398. s[5]:='23h3n';
  399. s[6]:='53v3n';
  400. s[7]:='63v2n';
  401. s[8]:='14v2n';
  402. s[9]:='24h2p';
  403. s[10]:='44v2n';
  404. s[11]:='25v2n';
  405. s[12]:='46h3';
  406. end;
  407. 27:
  408. begin
  409. s[1]:='31v2n';
  410. s[2]:='41h3n';
  411. s[3]:='62v3n';
  412. s[4]:='33v2n';
  413. s[5]:='43h2n';
  414. s[6]:='14h2p';
  415. s[7]:='44v3n';
  416. s[8]:='15v2n';
  417. s[9]:='25h2n';
  418. s[10]:='26h2n';
  419. end;
  420. 28:
  421. begin
  422. s[1]:='11h2n';
  423. s[2]:='31h2n';
  424. s[3]:='61v3n';
  425. s[4]:='12v2n';
  426. s[5]:='22v2n';
  427. s[6]:='32h3n';
  428. s[7]:='33v3n';
  429. s[8]:='43h2n';
  430. s[9]:='14h2p';
  431. s[10]:='45v2n';
  432. s[11]:='55h2n';
  433. s[12]:='16h3n';
  434. end;
  435. 29:
  436. begin
  437. s[1]:='11h3n';
  438. s[2]:='41v2n';
  439. s[3]:='61v2n';
  440. s[4]:='12v2n';
  441. s[5]:='22h2n';
  442. s[6]:='23h2n';
  443. s[7]:='43h2n';
  444. s[8]:='63v2n';
  445. s[9]:='14h2p';
  446. s[10]:='34v2n';
  447. s[11]:='54v3n';
  448. s[12]:='16h3n';
  449. end;
  450. 30:
  451. begin
  452. s[1]:='11h2n';
  453. s[2]:='31h2n';
  454. s[3]:='61v3n';
  455. s[4]:='13h2n';
  456. s[5]:='33h2n';
  457. s[6]:='14v3n';
  458. s[7]:='24h2p';
  459. s[8]:='44v2n';
  460. s[9]:='35v2n';
  461. s[10]:='46h3n';
  462. end;
  463. 31:
  464. begin
  465. s[1]:='31v3n';
  466. s[2]:='41h3n';
  467. s[3]:='12h2n';
  468. s[4]:='62v3n';
  469. s[5]:='13v2n';
  470. s[6]:='43h2n';
  471. s[7]:='24h2p';
  472. s[8]:='44v2n';
  473. s[9]:='55h2h';
  474. s[10]:='16h2n';
  475. s[11]:='46h3n';
  476. end;
  477. 32:
  478. begin
  479. s[1]:='11h2n';
  480. s[2]:='41v2n';
  481. s[3]:='61v3n';
  482. s[4]:='12v2n';
  483. s[5]:='23h2n';
  484. s[6]:='43h2n';
  485. s[7]:='14h2p';
  486. s[8]:='34v3n';
  487. s[9]:='45v2n';
  488. s[10]:='16h2n';
  489. s[11]:='56h2n';
  490. end;
  491. 33:
  492. begin
  493. s[1]:='11h3n';
  494. s[2]:='41v2n';
  495. s[3]:='51v2n';
  496. s[4]:='61v3n';
  497. s[5]:='12v2n';
  498. s[6]:='22h2n';
  499. s[7]:='23h2n';
  500. s[8]:='43h2n';
  501. s[9]:='14h2p';
  502. s[10]:='34v3n';
  503. s[11]:='25v2n';
  504. s[12]:='56h2n';
  505. end;
  506. 34:
  507. begin
  508. s[1]:='11h2n';
  509. s[2]:='31v2n';
  510. s[3]:='41h2n';
  511. s[4]:='42v2n';
  512. s[5]:='52h2n';
  513. s[6]:='13h3n';
  514. s[7]:='53v2n';
  515. s[8]:='63v3n';
  516. s[9]:='14h2p';
  517. s[10]:='44v2n';
  518. s[11]:='15v2n';
  519. s[12]:='46h3n';
  520. end;
  521. 35:
  522. begin
  523. s[1]:='11h2n';
  524. s[2]:='41v2n';
  525. s[3]:='51v2n';
  526. s[4]:='12v2n';
  527. s[5]:='22h2n';
  528. s[6]:='23h3n';
  529. s[7]:='14h2p';
  530. s[8]:='34v3n';
  531. s[9]:='44v2n';
  532. s[10]:='64v3n';
  533. s[11]:='46h2n';
  534. end;
  535. {
  536. 36:
  537.  begin
  538.   s[1]:='11h2n';
  539.   s[2]:='31v2n';
  540.   s[3]:='42v2n';
  541.   s[4]:='52h2n';
  542.   s[5]:='13h3n';
  543.   s[6]:='63v3n';
  544.   s[7]:='14v3n';
  545.   s[8]:='24v2n';
  546.   s[9]:='34h2p';
  547.   s[10]:='35h2n';
  548.   s[11]:='26h3n';
  549.   s[12]:='56h2n';
  550.  end;
  551. 37:
  552.  begin
  553.   s[1]:='11h2n';
  554.   s[2]:='41v2n';
  555.   s[3]:='51h2n';
  556.   s[4]:='12v3n';
  557.   s[5]:='52h2n';
  558.   s[6]:='23h3n';
  559.   s[7]:='53v3n';
  560.   s[8]:='63v3n';
  561.   s[9]:='24h2p';
  562.   s[10]:='15h2n';
  563.   s[11]:='35v2n';
  564.   s[12]:='16h2n';
  565.   s[13]:='56h2n';
  566.  end;
  567. 38:
  568.  begin
  569.   s[1]:='31v2n';
  570.   s[2]:='41h3n';
  571.   s[3]:='42h2n';
  572.   s[4]:='62v3n';
  573.   s[5]:='33v2n';
  574.   s[6]:='43h2n';
  575.   s[7]:='14h2p';
  576.   s[8]:='44v2n';
  577.   s[9]:='15v2n';
  578.   s[10]:='25h2n';
  579.   s[11]:='46h3n';
  580.  end;
  581. 39:
  582.  begin
  583.   s[1]:='11v2n';
  584.   s[2]:='21v2n';
  585.   s[3]:='31h2n';
  586.   s[4]:='32h2n';
  587.   s[5]:='62v3n';
  588.   s[6]:='13h2n';
  589.   s[7]:='33v2n';
  590.   s[8]:='43h2n';
  591.   s[9]:='14h2p';
  592.   s[10]:='44v2n';
  593.   s[11]:='35v2n';
  594.   s[12]:='46h3n';
  595.  end;
  596. 40:
  597.  begin
  598.   s[1]:='11h2n';
  599.   s[2]:='31v2n';
  600.   s[3]:='41h2n';
  601.   s[4]:='42v2n';
  602.   s[5]:='52h2n';
  603.   s[6]:='13h3n';
  604.   s[7]:='63v3n';
  605.   s[8]:='14v3n';
  606.   s[9]:='24v2n';
  607.   s[10]:='34v2n';
  608.   s[11]:='44h2p';
  609.   s[12]:='55v2n';
  610.   s[13]:='26h2n';
  611.  end;
  612. }
  613. end;
  614. initplateau:=conversion;
  615. end;