リアルタイムどう書く過去問(第10回)
問題はこちら->http://nabetani.sakura.ne.jp/hena/ord10haniwa/
この問題は、座標(のようなもの)をどのように決めるかがみそで、あとは難しくないと思われます。
リアルタイムどう書くE13の私の解き方
2021.02.20 URLがおかしくなっているので修正。
->https://qiita.com/smallbigcats/items/c637dc7fccd9add592c8
->https://qiita.com/drafts/c645ea864689e0b89ed9
が応用できるか挑戦してみました。
連番ではうまくいきませんが、TUVWの辺を上辺として、プログラムのコメントのように数字を割り当てますと、
上、右上、右下の六角形との差がそれぞれ11,10,1となります(m/2)。
join/3で六角形に割り当てた数字と文字を結合したものをリストにします。
初期値を34としm/2を利用して次々計算して求めた数がリストに入っているかどうかを判断します。
ところで、コメントの後半にありますように、割り当てた数の10の位を縦座標に、1の位を横座標にすると、
https://qiita.com/Nabetani/items/55641767510c2f9f235f
の多くの人の解答と同様のものとなるのでした。
/*
1 2 3 4 (T U V W)
11 12 13 14 15
21 22 23 24 25 26
31 32 33 34 35 36 37
41\ 42 43 44 45 46 47
51 52\ 53 54 55 56 57
61 62 63\ 64 65 66 67
|
0,1 0,2 0,3 0,4
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5 2,6
.........
|
1 2 3 4 5 6 7
0 T U V W
1 k H I J X
2 j S B C K Y
3 i R G A D L Z
4 h Q F E M a
5 g P O N b
6 f e d c
*/
n("1 2 3 4
11 12 13 14 15
21 22 23 24 25 26
31 32 33 34 35 36 37
42 43 44 45 46 47
53 54 55 56 57
64 65 66 67").
a("T U V W
k H I J X
j S B C K Y
i R G A D L Z
h Q F E M a
g P O N b
f e d c").
m(0,-11).
m(1,-10).
m(2,1).
m(3,11).
m(4,10).
m(5,-1).
solve(_,[],_,S,S):-!.
solve(L,[H|T],N1,S1,R):-
m(H,M),N is N1+M,(member(N:C,L)->(string_concat(S1,C,S),N2=N);
(string_concat(S1,"!",S)),N2=N1),solve(L,T,N2,S,R).
judg(S,C):-(S==C->write("pass ");write(" fail ")),writeln(S),!.
join(X,Y,Z):-Z=X:Y.
start:-
a(A),split_string(A,"\s,\n","\s",AL),n(N),split_string(N,"\s,\n","\s",NL),
maplist(atom_number,NL,NL1),maplist(join,NL1,AL,L),
str(S),split_string(S,"\s,\n","\s",SL),pre(SL,L),!.
pre([],_):-!.
pre([A,B,C|T],L):-
atom_chars(B,B1),maplist(atom_number,B1,B2),solve(L,B2,34,"A",S),judg(S,C),pre(T,L).
%start.
str("0 135004 ACDABHS
1 1 AC
2 33333120 AENc!!b!M
3 0 AB
4 2 AD
5 3 AE
6 4 AF
7 5 AG
8 4532120 AFQPOEMD
9 051455 ABSHSj!
10 23334551 ADMb!cdeO
11 22033251 ADLKLa!ML
12 50511302122 AGSjkTHTU!VW
13 000051 ABHT!!!
14 1310105 ACDKJW!V
15 50002103140 AGSk!HU!IVIU
16 3112045 AEDKYXKC
17 02021245535 ABCIJW!JIHBS
18 014204 ABIBCIB
19 255230 ADAGAEA
20 443501 AFPefgQ
21 022321 ABCKLZ!
22 554452 AGRh!!Q
23 051024 ABSHTUH
24 524002 AGAFGSB
25 54002441132 AGQRjSRhRSGA
26 11010554312 ACJV!!UTkSHI
27 23405300554 ADMNEFOFGRi!
28 555353201 AGRih!gPQG
29 22424105 ADLMabaLD
30 11340202125 ACJKDCKJX!!J
31 4524451 AFQFPf!P
32 44434234050 AFPf!!e!!Pgh
33 00554040132 ABHk!j!i!jRG
34 3440403 AEOePfgf
35 111130 ACJW!XW
36 21133343125 ADKXYZ!a!Z!L
37 353511 AEFOPFA
38 22204115220 ADLZYLY!KY!X
39 03013541 ABABICBGB
40 101344 ACIVJCA
41 2432541 ADENbNdN
42 45332242015 AFQPedc!!NME
43 215453 ADKCAGF
44 45540523454 AFQh!i!RQg!!
45 42434302545 AFEOd!!ONOef").
Author And Source
この問題について(リアルタイムどう書く過去問(第10回)), 我々は、より多くの情報をここで見つけました https://qiita.com/smallbigcats/items/77ee33dd8d4ebe37d025著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .