レディングに乗って、Goをパスしたら$ 200を集める


39

モノポリーボード

このコードゴルフの挑戦のために、ボードゲームMonopolyを構築します。

ルール:

  • 入力なし。
  • ボードを形成する各ASCII文字が米国版モノポリーボードの各スペースの最初の文字である11x11ボードを出力します。
  • 文字はスペースで区切る必要があります。
  • Go 右下から開始する必要があります。

生成する正確な文字列は

F K C I I B A V W M G 
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G 

右下から左下に向かって正方形が次のようになっていることに注意してください。

G --> Go
M --> Mediterranean Avenue
C --> Community Chest
B --> Baltic Avenue
I --> Income Tax
...
J --> Jail

編集 すごい!みんなこれが気に入ったはずです!:)


7
私は執事になるつもりはありませんが、ボードウォークに進む際にどのようにGoをパスしますか?
Sp3000

4
あなたが遊歩道にいる場合:)
jacksonecac

8
遊歩道にいる場合はチャンスカードを取得できません:(
jacksonecac

27
私はあなた全員に失敗しました
-jacksonecac

3
末尾のスペースは許可されますか?
アドナン

回答:


36

網膜、74バイト


FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG
S_`(._.)
_
9$*
\B

1

3番目から最後および最後の行には、単一のスペースを含める必要があります。

オンラインでお試しください!

説明


FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG

これにより、(空の)入力が2行目の文字列に置き換えられます。

S_`(._.)

これは、正規表現の一致(._.)(つまり_、中央にa がある3 文字)の周りで文字列を分割する分割ステージです。正規表現全体をグループに入れる理由は、分割ステージもグループのキャプチャ結果を返すためです。例えば、abcd周りに分割するとbc与えるが[a, d]、周りに分割するとb(c)与える[a, c, d]。このようにして、すべての._.部分を別々の行に取得しますが、先頭と末尾にある11文字の部分も取得します。この_オプションを使用して、個々の._.一致の間の空の結果を省略します。結果は次のようになります。

FKCIIBAVWMG
N_P
T_N
C_C
S_P
P_S
V_C
S_P
E_L
S_B
JCVCORIBCMG

次に、アンダースコアを処理します。

_
9$*

これにより、各アンダースコアが9個に置き換えられます11ここですぐにスペースの代わりにs を使用する理由は、次にスペースを挿入しやすくするためです。

\B

2行目にスペースがあることに注意してください。どの位置にあるこれは、挿入スペースでない行の先頭と最後を除いすなわちどこでも、単語の境界。

1

そして最後に、これらもすべて1スペースに置き換えます。


1
良くやった!それは速かった!
jacksonecac

39
+1 (._.)
破壊可能なレモン

^ちょうど約そのAHHAを言うことだった
jazzboy

25

ゼリー、44 バイト

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’ḃ23ṣ4ịØAz⁶ṙ1G

オンラインでお試しください!

アイディア

1列おきに列を削除し、列と行を入れ替えると、次のボードが得られます。

FNTCSPVSESJ
K         C
C         V
I         C
I         O
B         R
A         I
V         B
W         C
M         M
GPNCPSCPLBG

これで、各列を1単位右に回転させ、残りのすべてのスペースを右に移動できます。

JFNTCSPVSES
KC         
CV         
IC         
IO         
BR         
AI         
VB         
WC         
MM         
GGPNCPSCPLB

次に、残りのスペースを削除し、改行を文字Dに置き換えます。

JFNTCSPVSESDCKDVCDCIDOIDRBDIADBVDCWDMMDGGPNCPSCPLB

ここで、各文字をアルファベットの1から始まるインデックスに置き換えます。

10  6 14 20  3 19 16 22 19  5 19  4  3 11  4 22  3  4  3  9  4 15  9  4 18
 2  4  9  1  4  2 22  4  3 23  4 13 13  4  7  7 16 14  3 16 19  3 16 12  2

次に、この数字配列を全単射23から整数に変換します。

54580410997367796180315467139871590480817875551696951051609467717521

次に、この整数を全単射の基数250に変換します。

  2 232  57  78 163  84 132  77 228 144  27 100  77 176 195
 42   9  55  83 167 155   1 210 125 211   4 232 119  20

最後に、これらの数字を使用してJellyのコードページにインデックスを付けます

£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ

これは、プログラムに含めるエンコードされたデータです(29バイト)。目的の出力を生成するには、上記の手順を逆にするだけです。

コード

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’ḃ23ṣ4ịØAz⁶ṙ1G  Main link. No arguments.

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’               Convert the string from bijective
                                              base 250 (using the indices in
                                              Jelly's code page) to integer.
                               ḃ23            Convert that integer to bijective
                                              base 23.
                                  ṣ4          Split the resulting array at
                                              occurrences of 4.
                                    ịØA       Replace the remaining digits in the
                                              resulting 2D array with the
                                              corresponding uppercase letters.
                                       z⁶     Zip/transpose rows and columns,
                                              padding shorter rows with spaces.
                                         ṙ1   Rotate the rows one unit down.
                                           G  Grid; join rows by spaces, columns
                                              by linefeeds.

5
詳細な説明をありがとう。ゴルフの質問をコード化するための答えの背後にあるプロセスを見るのは常に面白いです。:)
XtraSimplicity

11
コードゴルフ-ベース250およびベース23の数字を見るのはまったく普通のこと
です。– corsiKa

素晴らしい圧縮技術。移調が必要なのはなぜですか?
ETHproductions

@ETHproductions Jellyにはパディングアトムがないため、すべての行に同じ長さのスペースを手動で埋め込むか、ダイアディックzip(z)にフィラーを使用できます。
デニス

16

05AB1E48 47バイト

バイトを保存してくれたエミグナに感謝します!

•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»

説明:

最初にいくつかの圧縮。•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•次の番号の圧縮バージョンです。

120860198958186421497710412212513392855208073968557051584380118734764403017

その後、これは基数33に変換され、次の文字列になります。

FKCIIBAVWMGN0PT0NC0CS0PP0SV0CS0PE0LS0BJCVCORIBCMG

ゼロは、次のコードを使用して9個のスペースに置き換えられます¾9ð×:。その後S、文字列を文字に分割し、それらを11個の要素の断片に分割します(で処理します11ô)。次の2次元配列を取得します。

[['F', 'K', 'C', 'I', 'I', 'B', 'A', 'V', 'W', 'M', 'G'], 
 ['N', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['T', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'N'], 
 ['C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'C'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['P', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'S'], 
 ['V', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'C'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['E', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'L'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'B'], 
 ['J', 'C', 'V', 'C', 'O', 'R', 'I', 'B', 'C', 'M', 'G']]

この配列をグリッド化し»て暗黙的に出力します。

CP-1252エンコードを使用します。オンラインでお試しください!


3
Dの代わりに0で圧縮すると、バイトが節約されます•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»
Emigna

@エミグナああ、それは賢い!ありがとう:)。
アドナン

12

Python 2、89バイト

l='%s '*11+'\n'
print(l+'%s%20s\n'*9+l)%tuple("FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG")

テンプレートを作成します

? ? ? ? ? ? ? ? ? ? ? 
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
? ? ? ? ? ? ? ? ? ? ? 

文字列のフォーマットを介して文字を置換します。テンプレートは、2種類の行を使用します。

  • lletter-plus-spaceの11のコピーの外側の行、次に改行。また、最初と最後の行にも使用されます。末尾にスペースがあります。
  • 文字の内側の行、19文字のパディングスペースが先行する文字、次に改行。中心線に対して9回コピーされます。

Python 3.5は、タプルのアンパックでバイトを節約できます(*'...',)


1
Python 3.5に切り替えると、バイトが節約されます。
デニス

9

PowerShellのV2 +、131の 123 114 110 99バイト

'F K C I I B A V W M G
N0P
T0N
C0C
S0P
P0S
V0C
S0P
E0L
S0B
J C V C O R I B C M G'-replace0,(" "*19)

これは、パイプライン上に改行が配置されたリテラル文字列-replaceであり、最後019スペースを入れるために少しだけあります。最初と最後の行は逐語的です。10スペースしかなく、それ以外の場合はほとんど繰り返されないため、ゴルフをするのに十分なスペースがありませんでした。この文字列はパイプラインに残り、暗黙的な出力Write-Outputはプログラムの完了時に発生します。

PS C:\Tools\Scripts\golfing> .\take-a-ride-on-reading.ps1
F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G

9

Javascript ES6 REPL105 102 101バイト

ここではあまり面白くない。コンソールに貼り付けて、目的の結果を確認します

@Arnauldのおかげで3バイト
節約@Neilのおかげでさらに1バイト節約

`FKCIIBAVWMG
N P
T N
C C
S P
P S
V C
S P
E L
S B
JCVCORIBCMG`.replace(/.( ?)/g,`$& `+`$1`.repeat(17))


REPLが許可されているとは思わない。
-NoOneIsHere


1
別のバイトを削り取ることができました。1sをスペースに置き換え、代わりにこの正規表現を使用します.replace(/.( ?)/g,`$& `+`$1`.repeat(17))
ニール

別のバイトを剃り落とすする別の方法は、交換することです1代わりに、この機能をスペースで複数可と使用:a=>a-1?a.repeat(18):a+' '
ETHproductions

@ニールありがとう、あなたのアプローチが大好き!
バスドロップCumberwubwubwub

7

///100 98バイト

/s/    //p/ssss   //q/pC
SpP
//!/ C /F K!I I B A V W M G 
NpP
TpN
CqPpS
VqEpL
SpB
J!V!O R I B!M G 

オンラインでお試しください!

何らかの不思議な理由で、Gsの後に後続スペースがあるようです。それらがなければ、私のコードは96バイトだったでしょう。

1バイトずつ削減してくれた42545(ETHproductions)56258(daHugLenny)に感謝します!


@ETHproductions間違ったリンクでしょうか?そのようなバイトを保存することはできません。
エリックアウトゴルファー

G最初と最後の行でsの後のスペースを削除すると、これは98バイトではありませんか?
エミグナ


1
@Emignaは知っていますが、正確な出力にはそれらが含まれているため、削除しません。
エリックアウトゴルファー

私の悪い、これを試してください。
ETHproductions


5

V75、62、59バイト

iFKCIIBAVWMG
NPTNCCSPPSVCSPELSB
JCVCORIBCMG-ò9á lli
òÍ./& 

オンラインでお試しください!

このcodelには非ASCII文字が含まれているため、hexdumpがあります。

0000000: 6946 4b43 4949 4241 5657 4d47 0a4e 5054  iFKCIIBAVWMG.NPT
0000010: 4e43 4353 5050 5356 4353 5045 4c53 420a  NCCSPPSVCSPELSB.
0000020: 4a43 5643 4f52 4942 434d 471b 2df2 39e1  JCVCORIBCMG.-.9.
0000030: 206c 6c69 0af2 cd2e 2f26 20               lli..../& 

説明。まず、次のテキストを入力します。

FKCIIBAVWMG
NPTNCCSPPSVCSPELSB
JCVCORIBCMG

その後、<esc>通常モードに戻ります。この時点で、カーソルはlastの3行目にありGます。便利なことに、カーソルのすぐ上の行の最初の列に配置するコマンドがあります。そのコマンドは-です。次に、2行目(N)で終わると、次のループを実行します。

ò9á lli
ò

説明:

ò           " Recursively:
 9á         "   Append 9 spaces
    ll      "   Move to the right twice. This will fail on the last time because there isn't a space to move into
      i     "   Enter a newline
ò           " End

これで、バッファは次のようになります。

FKCIIBAVWMG
N         P
T         N
C         C
S         P
P         S
V         C
S         P
E         L
S         B
JCVCORIBCMG

次に、圧縮正規表現を使用して、各文字をその文字とスペースで置き換えます。それがÍ./&一部です。これは、次のvim正規表現に変換されます。

:%s/./& /g

つまり:

:%          " On any line
  s/        " Substitute
    ./      " Any character with
      & /   " That same character and a space
         g  " Allow for multiple substitutions on the same line

4

R、149 146バイト

それほど印象的ではありませんが、これがどのようにゴルフされるかわかりません。pasteどういうわけか、悪用することが私の最初の推測です。241バイトの生テキストと比較してください。

x=strsplit("NTCSPVSESPNCPSCPLB","")[[1]];cat("F K C I I B A V W M G\n");for(i in 1:9)cat(x[i],rep("",18),x[i+9],"\n");cat("J C V C O R I B C M G")

Rフィドル


4

Python 2、108バイト

他のPythonの答えとは少し異なり、置換は使用せず、文字列結合のみを使用します。

print'\n'.join(map(' '.join,['FKCIIBAVWMG']+map((' '*9).join,zip('NTCSPVSES','PNCPSCPLB'))+['JCVCORIBCMG']))

1
zipが前に進むとわかっていました!以前は118までほぼ同じ解決策があり、今晩はゴルフをするつもりでした。地図がありませんでした。あなたはそれに私を打ったと思います。+1
エルペドロ

4

Perl、90バイト

かなり退屈なアプローチ、削減するより良い方法を考えることはできません... -E追加費用なしで必要です。すべての行の末尾に追加のスペースを出力します。@Dadaのおかげで-2バイト!

say"FKCIIBAVWMG
NZP
TZN
CZC
SZP
PZS
VZC
SZP
EZL
SZB
JCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr

使用法

perl -E 'say"FKCIIBAVWMG
NZP
TZN
CZC
SZP
PZS
VZC
SZP
EZL
SZB
JCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'

図2は、短い(ただし、基本的に同じコード)バイト:perl -E 'say"FKCIIBAVWMG\nNZP\nTZN\nCZC\nSZP\nPZS\nVZC\nSZP\nEZL\nSZB\nJCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'。(\n90になるようにリテラルの改行で置き換えます)。
ダダ

@Dada Ahhh、もっといい!ありがとう!
ドムヘイスティングス

「とてもいい」は40バイトのソリューションを見つけていたでしょうが、ありがとう:D-
ダダ

4

Jolf、72バイト

Ζ0ρ,ahtht"111"'.d?=H♣Q♣+."FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"wΖhζ♣

すべて\x05に置き換えるか、ここで試してください!

Ζ0ρ,ahtht"111"'.d?=H♣Q♣+."..."wΖhζ♣
Ζ0                                   ζ = 0
   ,ahtht"111"                       a box of width&height 11, with borders "1"
  ρ           '.d                    replace each char in that string with...
                 ?=H♣                 is it a space?
                     Q♣                if so, return two spaces.
                                      otherwise
                        ."..."         get the Nth member of this string
                              wΖhζ      where N = (++ζ) - 1
                       +          ♣      and add a space to the end

これにより、目的の文字列が得られます。


3

Java 7、177 165 142 131バイト

String c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCGM".replace("_","         ").replace(""," ");}

@BassdropCumberwubwubwubのおかげで-15バイト。@Numberknotの
おかげで-11バイト。

未ゴルフ&テストコード:

ここで試してみてください。

class M{
  static String c(){
    return "FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCGM"
      .replace("_","         ").replace(""," ");
  }

  public static void main(String[] a){
    System.out.print(c());
  }
}

出力:

F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G

1
String c(){String s=" ";return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace(""," ").replace("_",s);}150(stackexchangeは余分なスペースを削除することに注意してください)
Bassdrop Cumberwubwubwub

@BassdropCumberwubwubwub Umm ..これは、
ケビンCruijssen

したがって、私のメモでは、より多くのスペースがあるはずですがs、stackexchangeはそれらを削除しました。ここだideone、今でもで142のバイトは
Bassdrop Cumberwubwubwub

@BassdropCumberwubwubwubああ大丈夫。あなたが間で言及したことを知りませんでしたs=" "。その場合、それは確かに短くなります。そして、.‌​replace(""," ").replace("_",s);することができ.replace("_",s).‌​replace(""," ");、追加-8バイトのための代わりに
ケビンCruijssen

1
String c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace("_","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;").replace(""," ");}131バイト
ナンバーノット

3

Befunge、120バイト

<v"FKCIIBAVWMG NPTNCCSPPSVCSPELSB $JCVCORIBCMG "
:<,*48 ,_v#-*48<
>1-:#v_\,>$52*, :48*-!#v_,54*
^,*84<         ^p19*88$<

最初の行には、逆に印刷される文字列があります(そうではないように見えますが、コードはその行を逆方向に進んでいます)。2行目は、上部と下部の行を印刷します。3行目と4行目の左側が中央の行を印刷し、右下の小さなチャンクが面白いことをします。カーソルを2行目に戻し、最後の行を印刷しますが、それを終えると、終了します。

最初の行でわかるように、文字列はスペースで区切られ、最初の行、中間の行、最後の行を区別します。スペースは何でもかまいません。ASCII文字の0〜9を使用すると、4バイトを簡単に保存できます。表示される$は、ごみ文字であり、そこにある必要があり、スペース以外のものに置き換えることができます。


3

J、77 73バイト

' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'{~_22}.\,0,.(*+/\),0=*/~5-|i:5

合計の半分を超える43バイトが文字列だけに使用されることに注意してください' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'

説明

まず、リストを作成します

   |i:5
5 4 3 2 1 0 1 2 3 4 5
   5-|i:5
0 1 2 3 4 5 4 3 2 1 0

次に、そのタイムテーブルを作成します

   */~5-|i:5
0 0  0  0  0  0  0  0  0 0 0
0 1  2  3  4  5  4  3  2 1 0
0 2  4  6  8 10  8  6  4 2 0
0 3  6  9 12 15 12  9  6 3 0
0 4  8 12 16 20 16 12  8 4 0
0 5 10 15 20 25 20 15 10 5 0
0 4  8 12 16 20 16 12  8 4 0
0 3  6  9 12 15 12  9  6 3 0
0 2  4  6  8 10  8  6  4 2 0
0 1  2  3  4  5  4  3  2 1 0
0 0  0  0  0  0  0  0  0 0 0

次に、ゼロで等しいかどうかをテストします

   0=*/~5-|i:5
1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1

それを平坦化し、累積和を見つけ、要素ごとに乗算します

   ,0=*/~5-|i:5
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
   +/\,0=*/~5-|i:5
1 2 3 4 5 6 7 8 9 10 11 12 12 12 12 12 12 12 12 12 12 13 14 14 14 14 14 14 14 14 14 14 15 16 16 16 16 16 16 16 16 16 16 17 18 18 18 18 18 18 18 18 18 18 19 20 20 20 20 20 20 20 20 20 20 21 22 22 22 22 22 22 22 22 22 22 23 24 24 24 24 24 24 24 24 24 24 25 26 26 26 26 26 26 26 26 26 26 27 28 28 28 28 28 28 28 28 28 28 29 30 31 32 33 34 35 36 37 38 39 40
   (*+/\),0=*/~5-|i:5
1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 0 0 0 0 0 0 13 14 0 0 0 0 0 0 0 0 0 15 16 0 0 0 0 0 0 0 0 0 17 18 0 0 0 0 0 0 0 0 0 19 20 0 0 0 0 0 0 0 0 0 21 22 0 0 0 0 0 0 0 0 0 23 24 0 0 0 0 0 0 0 0 0 25 26 0 0 0 0 0 0 0 0 0 27 28 0 0 0 0 0 0 0 0 0 29 30 31 32 33 34 35 36 37 38 39 40

次に、ゼロで結合し、長さ22のサブリストに分割し、各サブリストの先頭をドロップし、値を文字列のインデックスとして使用します ' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'

   ' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'{~_22}.\,0,.(*+/\),0=*/~5-|i:5
F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G

私は、一般的な文字列の圧縮を使用して得ることができる最高は90バイトである:(' ',@,.~]);._1';FKCIIBAVWMG;N_P;T_N;C_C;S_P;P_S;V_C;S_P;E_L;S_B;JCVCORIBCMG'rplc'_';9#' '
コナー・オブライエン

@ ConorO'Brienええ、他の言語に辞書と組み込みの圧縮がある場合、Jで文字列の圧縮を行うのは困難です。
マイル

@ ConorO'Brien私はあなたのアイデアをもう少しゴルフしようとしましたが、76バイトになりました_11,@,.&' '\'FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG'rplc'_';9#' '
マイル

3

実際には、74バイト

"%s"9⌐α' j;"%s%20s"9α'
j(k'
j"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"#@%

オンラインでお試しください!

このプログラムは、xnorのPython 2 answerと同じ基本原理で動作します

説明(\nわかりやすくするために改行を置き換えました):

"%s"9⌐α' j                                       ' '.join(["%s"]*11)
;                                                duplicate
"%s%20s"9α'\nj                                   '\n'.join(["%s%20s"]*9)
(                                                move bottom of stack to top
k'\nj                                            '\n'.join(stack)
"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"#@%                    %tuple(longstring)

3

C#6、192 190バイト

using System.Linq;
string f()=>string.Join("\n","FKCIIBAVWMG~N!P~T!N~C!C~S!P~P!S~V!C~S!P~E!L~S!B~JCVCORIBCMG".Replace("!","         ").Split('~').Select(s=>string.Join(" ",s.Select(c=>c))));

後続スペースなし; 末尾の改行なし。

簡単なソリューション。リテラル文字列から始めます。Replace !9スペース分。次に、Splitによって11個の文字列に~、さらにchars(inner Select)に。各文字にスペースを追加しJoinてから、11個の文字列に戻ります。最後にJoin改行文字による別の。


3

ルビー、92

完全なプログラム、次を使用して標準出力に出力 $> <<

40.times{|i|$><<"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"[i]+(i%29>9?[$/,' '*19][i%2]:' ')}

プロットする合計40文字があります。文字10から28は、改行または' '*19。前後の文字は単一のスペースで区切られています。


3

Perl、115 112バイト

print FKCIIBAVWMG=~s/(.)/\1 /gr.NPTNCCSPPSVCSPELSB=~s/(.)(.)/"\n$1".$"x19 .$2/gre."\nJCVCORIBCMG"=~s/(.)/\1 /gr;

次の出力を生成します。

F K C I I B A V W M G 
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G 

出力の最初と最後の行には末尾スペースがあります。このコードは、正規表現の置換と、オブジェクトが定義されていない場合、文字列として解釈されるという事実を利用します(たとえば、FKCIIBAVWMGは "FKCIIBAVWMG"として扱われます。私は他のどこにも精通することができませんでした。

編集1:で置き換え" "$"、3バイトを保存しました。外側の括弧を削除し、印刷後にスペースを挿入し、括弧を削除してから$"x19スペースを追加します(したがって、.10進数として解釈されません)


あなたはまだ数バイトを保存することができます:s/(.)/\1 /に置き換えることができますs/./$& /。最後のセミコロンをドロップします。使用sayの代わりに、print(そのためにあなたは、アドオンのいずれかに必要があります-M5.010または使用-Eの代わりに-e、しかし、両方が(参照無料ですこちら))。の代わりのリテラル改行\n
ダダ


2

Python 2、116バイト

文字列の置換が非常に冗長であるにもかかわらず、なんらかの理由で非常に簡単です。おそらく使用reする方が短いかもしれません。

print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace(' ! ','\n').replace('@',' '*17)

print'F K C I I B A V W M G\nN@P\nT@N\nC@C\nS@P\nP@S\nV@C\nS@P\nE@L\nS@B\nJ C V C O R I B C M G'.replace('@',' '*19)また、より簡単にしたい場合は、結合を使用しない116バイトです。または、print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace('! ','\n').replace('@',' '*17)末尾の空白が許可されている場合は115バイトです。(置換する引数は、「!」ではなく「!」です。)
MichaelS

2

バッチ、171バイト

@echo F K C I I B A V W M G
@set s=NPTNCCSPPSVCSPELSB
:l
@echo %s:~0,1%                   %s:~1,1%
@set s=%s:~2%
@if not "%s%"=="" goto l
@echo J C V C O R I B C M G

2

GameMaker言語、148バイト

私はそれがかなり基本的であることを知っていますが、これがGMLで打ち負かされる可能性はないと思います...

a="                   "return"F K C I I B A V W M G #N"+a+"P#T"+a+"N#C"+a+"C#S"+a+"P#P"+a+"S#V"+a+"C#S"+a+"P#E"+a+"L#S"+a+"B#J C V C O R I B C M G "

1
-おかげで@NiCkNewmanが、私は実際にこのサイトはかなりの数倍にする前にそれを使用しましたcodegolf.stackexchange.com/search?q=GameMaker
Timtech

なるほど、ゲームエンジンのGDScript言語で何かをすることを考えていましたGodot。しかし、それが大丈夫かどうかわからない:)
NiCkニューマン

ああ、ボードだけが大きかった場合。string_repeat(" ",19)はと同じ長さ" "です。
u54112

1
@NiCkNewman大丈夫なはずです、何か書いたら教えてください:)
Timtech

@lastresort私が知っている... GMLは物事を破壊するトリックを可能にしますが、そのコマンドは非常に冗長です
...-Timtech

2

ピップ、64バイト

コードの63バイト、-Sフラグの場合は+1 。

.*"NTCSPVSES".sX19.^"PNCPSCPLB"PE^"FKCIIBAVWMG"AE^"JCVCORIBCMG"

オンラインでお試しください!

説明

使用される演算子:

  • . (バイナリ)連結します(リストで項目ごとに操作します)。
  • X(バイナリ)文字列乗算。(sはに事前初期化された変数です" "。)
  • ^ (単項)文字列を文字のリストに分割します。
  • .*文字列を文字に分割する別の方法です。これは、単項演算子.をその文字列のノーオペレーションであり、*メタ演算子と組み合わせて、単項演算子をその(反復可能な)オペランドの各項目にマップします。を使用.*"..."すると、バイトを1 (^"...")つ節約できます。- .よりも優先順位が高いため、括弧が必要になり^ます。
  • PEリストの先頭に要素を追加します。AEリストに要素を追加します。

その背景を踏まえて、コードをステップごとに示します。

.*"NTCSPVSES"

['N 'T 'C 'S 'P 'V 'S 'E 'S]

.sX19

["N                   "
 "T                   "
 "C                   "
 "S                   "
 "P                   "
 "V                   "
 "S                   "
 "E                   "
 "S                   "]

.^"PNCPSCPLB"

["N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"]

PE^"FKCIIBAVWMG"

[['F 'K 'C 'I 'I 'B 'A 'V 'W 'M 'G]
 "N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"]

AE^"JCVCORIBCMG"

[['F 'K 'C 'I 'I 'B 'A 'V 'W 'M 'G]
 "N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"
 ['J 'C 'V 'C 'O 'R 'I 'B 'C 'M 'G]]

この結果が自動印刷されると、-Sフラグはスペースのサブリストと改行のメインリストを結合し、目的の出力を提供します。


2

C、171 156バイト

i,j;char*b="FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG ";f(){for(i=1;*b;j=i%21==0?putchar(*b++),puts(""),i++,*b++:i<21||i>210?i&1?*b++:32:32,putchar(j),i++);}

末尾の改行文字も出力します...おそらくもう少しゴルフダウンできます。


2

Perl 5、92 86バイト

  • ダダのおかげで6バイト節約

$a="%s "x11;printf"$a
"."%s%20s
"x9 .$a,FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG=~/./g

使用sprintf、パディング、および文字列繰り​​返し演算子x


いい解決策。置き換え:あなたは数バイトかかわらを保存することができ\nますが、間にスペースは必要ありません、リテラル改行とxオペレータと、次の数を、そして最終的に交換してくださいsplit//,xxxxxx=~/./g
ダダ

1

ハスケル、128の 125 114バイト

mapM(putStrLn.((:" ")=<<))$"FKCIIBAVWMG":zipWith(\a b->a:"         "++[b])"NTCSPVSES""PNCPSCPLB"++["JCVCORIBCMG"]

ここで試してみてください

  • ((:" ")=<<)あるconcatMap (\a -> [a,' '])-パッドは、入力中のすべての文字の後ろにスペースを追加することにより、

1

Powershell、95バイト

@AdmBorkBorkの回答に触発されました。

'FKCIIBAVWMG
N0P
T0N
C0C
S0P
P0S
V0C
S0P
E0L
S0B
JCVCORIBCMG'-replace0,(' '*9)-replace'.','$0 '

説明

最初の置換演算子は、四角形を作成します11x11

FKCIIBAVWMG
N         P
T         N
C         C
S         P
P         S
V         C
S         P
E         L
S         B
JCVCORIBCMG

2番目の置換演算子は、各文字の後にスペースを挿入します。結果には末尾のスペースがあります。

F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.