Lir*_*una 26 language-agnostic code-golf rosetta-stone
按字符排序的最短代码从给定的数字卡列表中输出最佳案例的二十一点手.
输入是由空格分隔的1到10(含)之间的数字列表.
输出将是从该卡片列表中形成的最佳二十一点手 - 最接近的可用组合,通过所有卡值的总和达到21而不超过它.卡可以删除但不能添加.
如果需要移除两张或多张卡以支持一张卡以获得相同结果(移除5或4,1以获得21),则移除最少的卡.如果要移除相同数量的卡(移除1,4或3,2),将删除具有最小值的组(在前面的示例中,1,4将被移除为min(min(3,2), min(1,4))属于该对).在重复卡的情况下,应该删除第一次遭遇.
输出将形成为钻石卡,输入顺序保留:
__________ __________ | || | | || /\ | | || \/ | | /\ || | | \/ || | | || /\ | | || \/ | |__________||__________| __________ __________ | || | | /\ || /\ /\ | | \/ || \/ \/ | | /\ || | | \/ || | | /\ || /\ /\ | | \/ || \/ \/ | |__________||__________| __________ __________ | || | | /\ /\ || /\ /\ | | \/ \/ || \/ \/ | | /\ || /\ /\ | | \/ || \/ \/ | | /\ /\ || /\ /\ | | \/ \/ || \/ \/ | |__________||__________| __________ __________ | || | | /\ /\ || /\ /\ | | \/ /\ \/ || \/ /\ \/ | | /\ \/ /\ || /\ \/ /\ | | \/ \/ || \/ /\ \/ | | /\ /\ || /\ \/ /\ | | \/ \/ || \/ \/ | |__________||__________| __________ __________ | /\ /\ || /\ /\ | | \/ \/ || \/ /\ \/ | | /\ /\ || /\ \/ /\ | | \/ /\ \/ || \/ \/ | | /\ \/ /\ || /\ /\ | | \/ \/ || \/ /\ \/ | | /\ /\ || /\ \/ /\ | |_\/____\/_||_\/____\/_|
Input:
1 5 7 8
Output:
__________ __________ __________ __________
| || || || |
| || /\ /\ || /\ /\ || /\ /\ |
| || \/ \/ || \/ /\ \/ || \/ /\ \/ |
| /\ || /\ || /\ \/ /\ || /\ \/ /\ |
| \/ || \/ || \/ \/ || \/ /\ \/ |
| || /\ /\ || /\ /\ || /\ \/ /\ |
| || \/ \/ || \/ \/ || \/ \/ |
|__________||__________||__________||__________|
Run Code Online (Sandbox Code Playgroud)
Input:
10 3 4 2 6
Output:
__________ __________ __________ __________
| /\ /\ || || || |
| \/ /\ \/ || /\ || /\ || /\ /\ |
| /\ \/ /\ || \/ || \/ || \/ \/ |
| \/ \/ || /\ || || /\ /\ |
| /\ /\ || \/ || || \/ \/ |
| \/ /\ \/ || /\ || /\ || /\ /\ |
| /\ \/ /\ || \/ || \/ || \/ \/ |
|_\/____\/_||__________||__________||__________|
Run Code Online (Sandbox Code Playgroud)
Input
5 10 5 2 3
Output:
__________ __________ __________ __________
| /\ /\ || || || |
| \/ /\ \/ || /\ /\ || /\ || /\ |
| /\ \/ /\ || \/ \/ || \/ || \/ |
| \/ \/ || /\ || || /\ |
| /\ /\ || \/ || || \/ |
| \/ /\ \/ || /\ /\ || /\ || /\ |
| /\ \/ /\ || \/ \/ || \/ || \/ |
|_\/____\/_||__________||__________||__________|
Run Code Online (Sandbox Code Playgroud)
代码计数包括输入/输出(即完整程序).
eph*_*ent 11
4(1!:2)~,&(10{a.)"1>,.&.>/4 :'''/\/\''(x(<@:+)"1]4 2$1|.4#0 1)}y'&.>/@((<>1 7 1#1&|.@(2 10&#)&.>' _';'| ';'|_'),~>)"0(>({~[:(i.[:>./[*22&>)+/@>)(#:@i.@(2&^)@#<@#"1 _])".1!:1]3){a:,(((1$7);(a 0 _1;7),(a 0 2 _3 _1;7),((a=:,&.>/\)0 2 6 8 _3 _1;4;_5)){&.><,{(2+i.5);2 5 8),(4 5;k);<2 5;6 5;k=:,{2 8;~>:+:i.4
Run Code Online (Sandbox Code Playgroud)
$ echo -n 1 5 7 8 | jconsole test.ijs __________ __________ __________ __________ | || || || | | || /\ /\ || /\ /\ || /\ /\ | | || \/ \/ || \/ /\ \/ || \/ /\ \/ | | /\ || /\ || /\ \/ /\ || /\ \/ /\ | | \/ || \/ || \/ \/ || \/ /\ \/ | | || /\ /\ || /\ /\ || /\ \/ /\ | | || \/ \/ || \/ \/ || \/ \/ | |__________||__________||__________||__________| $ echo -n 10 3 4 2 6 | jconsole test.ijs __________ __________ __________ __________ | /\ /\ || || || | | \/ /\ \/ || /\ || /\ || /\ /\ | | /\ \/ /\ || \/ || \/ || \/ \/ | | \/ \/ || /\ || || /\ /\ | | /\ /\ || \/ || || \/ \/ | | \/ /\ \/ || /\ || /\ || /\ /\ | | /\ \/ /\ || \/ || \/ || \/ \/ | |_\/____\/_||__________||__________||__________| $ echo -n 5 10 5 2 3 | jconsole test.ijs __________ __________ __________ __________ | /\ /\ || || || | | \/ /\ \/ || /\ /\ || /\ || /\ | | /\ \/ /\ || \/ \/ || \/ || \/ | | \/ \/ || /\ || || /\ | | /\ /\ || \/ || || \/ | | \/ /\ \/ || /\ /\ || /\ || /\ | | /\ \/ /\ || \/ \/ || \/ || \/ | |_\/____\/_||__________||__________||__________|
寻找最佳手牌的核心实际上非常简单.生成给定卡的功率集,并选择值最小值小于22的卡.
({~[:(i.[:>./[*22&>)+/@>)(#:@i.@(2&^)@#<@#"1 _])
Run Code Online (Sandbox Code Playgroud)
然后我们从一张空白卡开始
<>1 7 1#1&|.@(2 10&#)&.>' _';'| ';'|_'
Run Code Online (Sandbox Code Playgroud)
并在适当的地方镶嵌钻石.
'/\/\'(x(<@:+)"1]4 2$1|.4#0 1)}y
Run Code Online (Sandbox Code Playgroud)
该计划的其余部分由钻石所在的表格所主导.
h=map(int,raw_input().split());H=len(h);R=range
for r in R(9):x=["| "[1>r]];print"".join("_ "[0<r<8].join(x+[" \//\__"[ord(('?'*11+'@'*8+'bb@BBbbbbbQY@AAQQQYYbfH@H@HbffYQD@D@DQQYfb@``bbbbfQY@PPQQQQQbf????????]]')[r*10+c])*2>>i&6:][:2]for i in 0,2,4]+x)for c in max([[h[b]for b in R(H)if n&1<<b]for n in R(1<<H)],key=lambda c:(sum(c)<22,sum(c),len(c),sorted(c),c)))
Run Code Online (Sandbox Code Playgroud)
$ echo 2 4 8 1 8 3| python blackjack.py __________ __________ __________ __________ | || || || | | /\ || /\ /\ || /\ /\ || /\ | | \/ || \/ /\ \/ || \/ /\ \/ || \/ | | || /\ \/ /\ || /\ \/ /\ || /\ | | || \/ /\ \/ || \/ /\ \/ || \/ | | /\ || /\ \/ /\ || /\ \/ /\ || /\ | | \/ || \/ \/ || \/ \/ || \/ | |__________||__________||__________||__________| $ echo 1 4 5 4 7 4 8| python blackjack.py __________ __________ __________ __________ __________ | || || || || | | || /\ /\ || /\ /\ || /\ /\ || /\ /\ | | || \/ \/ || \/ \/ || \/ /\ \/ || \/ \/ | | /\ || /\ || || /\ \/ /\ || | | \/ || \/ || || \/ \/ || | | || /\ /\ || /\ /\ || /\ /\ || /\ /\ | | || \/ \/ || \/ \/ || \/ \/ || \/ \/ | |__________||__________||__________||__________||__________|
369个字符
h=map(int,raw_input().split());H=len(h);R=range;j=[]
for n in R(1<<H):c=[h[b]for b in R(H)if n&1<<b];j+=[(sum(c)<22,sum(c),len(c),sorted(c),c)]
for r in R(9):x=["| "[1>r]];print"".join("_ "[0<r<8].join(x+[" \//\__"[ord(('?'*11+'@'*8+'bb@BBbbbbbQY@AAQQQYYbfH@H@HbffYQD@D@DQQYfb@``bbbbfQY@PPQQQQQbf????????]]')[r*10+c])*2>>i&6:][:2]for i in 0,2,4]+x)for c in max(j)[-1])
Run Code Online (Sandbox Code Playgroud)
377个字符
h=map(int,raw_input().split());H=len(h);R=range;j=[]
for n in R(1<<H):c=[h[b]for b in R(H)if n&1<<b];j+=[(sum(c),len(c),sorted(c),c)]*(sum(c)<22)
T="@@@HD@@?@BA@@`P?@BAHD`P?@bQ@@bQ?@bQHDbQ?@bQbQbQ?@bYfQbQ?@bYfYfQ?bQbYfQb]bYfQbYf]"
for r in R(9):x=["| "[1>r]];print"".join("_ "[0<r<8].join(x+[" \//\__"[ord(('?'+T[c*8-8:])[r])*2>>i&6:][:2]for i in 0,2,4]+x)for c in max(j)[-1])
Run Code Online (Sandbox Code Playgroud)
408个字符
h=map(int,raw_input().split());H=len(h);R=range;j=[]
for n in R(1<<H):c=[h[b]for b in R(H)if n&1<<b];j+=[(sum(c),len(c),sorted(c),c)]*(sum(c)<22)
T="@@@DH@@ @AB@@P` @ABDHP` @Qb@@Qb @QbDHQb @QbQbQb @QfYbQb @QfYfYb QbQfYbQn QfYbQfYn".split();U="\x3f"
for r in R(9):s="_ "[0<r<8];x=["| "[1>r]];print"".join(s.join(x+[(" ","/\\","\/","__")[ord((U+T[c-1]+U)[r])>>i&3]for i in 0,2,4]+x)for c in sorted(j)[-1][-1])
Run Code Online (Sandbox Code Playgroud)
' ':x/{~}%:h;9,{:r;h,2\?,{:m;h,,{2\?m&},{h\=}%}%1>{:j[{+}*.22<\j,j$j]}$)\;{:c;[x]3,{4\?' \//\__'2/[11'?'*8'@'*'bb@BBbbbbbQY@AAQQQYYbfH@H@HbffYQD@D@DQQYfb@``bbbbfQY@PPQQQQQbf'8'?'*]']]'+10r*c+=@/3&=}%[x]++' _'1/7r&!=*}%'|':x;n}%
Run Code Online (Sandbox Code Playgroud)
$ echo 10 9 8 7 6 5 | ../golfscript.rb black.gs __________ __________ __________ | || || | | /\ /\ || /\ /\ || /\ /\ | | \/ /\ \/ || \/ /\ \/ || \/ \/ | | /\ \/ /\ || /\ \/ /\ || /\ /\ | | \/ /\ \/ || \/ \/ || \/ \/ | | /\ \/ /\ || /\ /\ || /\ /\ | | \/ \/ || \/ \/ || \/ \/ | |__________||__________||__________|
231个字符
' ':x/{~}%:h,2\?,{:m;h,,{2\?m&},{h\=}%}%1>{:j[{+}*.22<\j,j$j]}$-1=:h;9,{:r;h{:c;[x]3,{4\?' \//\__'2/11'?'*8'@'*'bb@BBbbbbbQY@AAQQQYYbfH@H@HbffYQD@D@DQQYfb@``bbbbfQY@PPQQQQQbf'8'?'*']]'++++10r*c+=@/3&=}%[x]++' _'1/7r&!=*}%'|':x;n}%
Run Code Online (Sandbox Code Playgroud)
这个怎么运作
# parse input into a list
' ':x/{~}%:h
# create the powerset
,2\?,{:m;h,,{2\?m&},
# map the powerset onto the cards
{h\=}%}%
# trim the empty set from the powerset
1>
# sort the hands. most preferred hand will be last
{:j[{+}*.22<\j,j$j]}$
# take the preferred hand from the end of the list
-1=:h;
# for r in 0..8
9,{:r
...more to follow
Run Code Online (Sandbox Code Playgroud)