독서에 타고, 당신이 이동을 통과하면 $ 200를 수집


39

독점위원회

이 코드 골프 도전을 위해 우리는 보드 게임 독점을 구축 할 것입니다.

규칙 :

  • 입력하지 마십시오.
  • 보드를 형성하는 각 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
나는 stickler가 아니라는 것을 의미하지는 않지만 ... Boardwalk로 전진하면서 어떻게 가나 요?
Sp3000

4
판자를 깐 길 :)
jacksonecac

8
보드 워크를
타면

27
나는 당신을 모두 실패
jacksonecac

3
후행 공백이 허용됩니까?
Adnan

답변:


36

레티 나 , 74 바이트


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

1

마지막 줄부터 마지막 ​​줄까지는 단일 공백을 포함해야합니다.

온라인으로 사용해보십시오!

설명


FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG

이것은 (빈) 입력을 두 번째 줄의 문자열로 바꿉니다.

S_`(._.)

이 단계는 정규식과 일치하는 문자열 (._.)(즉 _, 중간에 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로 바꿉니다 1. 1공백 대신에 s 를 사용하는 이유는 다음에 패딩 공간을 더 쉽게 삽입 할 수 있기 때문입니다.

\B

두 번째 줄에는 공백이 있습니다. 이것은 단어 경계 가 아닌 모든 위치 , 즉 줄의 시작과 끝을 제외한 모든 위치에 공백을 삽입합니다 .

1

그리고 마지막으로, 모든 1공간을 공백으로 바꿉니다.


1
좋은 작업! 그것은 빠르다!
jacksonecac

39
일에 대한 (._.).
Destructible Lemon

^ 아하
재즈 보이

25

젤리 , 44 바이트

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

온라인으로 사용해보십시오!

생각

두 번째 열을 모두 제거하고 열이있는 행을 바꾸면 다음 보드가 표시됩니다.

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

이제 각 열을 한 단위 오른쪽으로 회전하여 나머지 모든 공간을 오른쪽으로 이동할 수 있습니다.

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

그런 다음이 자릿수 배열을 bijective base 23 에서 integer 로 변환합니다 .

54580410997367796180315467139871590480817875551696951051609467717521

이제이 정수를 bijective base 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에는 패딩 아톰이 없으므로 모든 행을 동일한 길이의 공백으로 수동으로 채우거나 z필러와 함께 이진 zip ( )을 사용할 수 있습니다 .
Dennis

16

05AB1E , 48 47 바이트

바이트를 저장해 준 Emigna 에게 감사합니다 !

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

설명:

먼저 약간의 압축. •(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•다음 숫자의 압축 버전입니다.

120860198958186421497710412212513392855208073968557051584380118734764403017

그 후, 이것은 기본 33으로 변환되어 다음 문자열로 나타납니다.

FKCIIBAVWMGN0PT0NC0CS0PP0SV0CS0PE0LS0BJCVCORIBCMG

다음 코드를 사용하여 0을 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']]

우리는 gridify 이와 배열 »과 암시 적으로 출력을.

CP-1252 인코딩을 사용합니다 . 온라인으로 사용해보십시오!


3
D 대신 0으로 압축 하면 바이트가 절약됩니다.•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»
Emigna

@Emigna 아, 영리하다! 감사 :).
Adnan

12

파이썬 2, 89 바이트

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

템플릿을 만듭니다.

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

문자열 형식을 통해 문자로 대체합니다. 템플릿은 두 가지 유형의 선을 사용합니다.

  • l11 개의 문자 플러스 공백으로 이루어진 외부 행 , 그 다음 줄 바꿈. 첫 번째 줄과 마지막 줄에도 사용됩니다. 후행 공간이 있습니다.
  • 문자의 내부 줄, 그 뒤에 문자 앞에 19 개의 패딩 공백, 줄 바꿈 문자가옵니다. 중심선에 대해 9 번 복사되었습니다.

파이썬 3.5는 터플 풀기를 사용하여 바이트를 저장할 수 있습니다 (*'...',).


1
Python 3.5로 전환하면 바이트가 절약됩니다.
Dennis

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끝 부분이 공백 0으로 바뀌는 리터럴 문자열입니다 19. 첫 번째와 마지막 줄은 그대로입니다. 공간이 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

자바 ES6 REPL , 105 (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이 허용되지 않는다고 생각합니다.
NoOneIsHereHere


1
다른 바이트를 면도했습니다. 바꾸기 1공백들 대신이 정규 표현식을 사용.replace(/.( ?)/g,`$& `+`$1`.repeat(17))

다른 바이트를 제거하는 다른 방법은 1s를 공백 으로 바꾸고 대신이 기능을 사용하는 것입니다.a=>a-1?a.repeat(18):a+' '
ETHproductions

@ Neil 고맙습니다, 당신의 접근 방식을 사랑하십시오!
Bassdrop 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 잘못된 링크일까요? 그런 바이트는 저장할 수 없습니다.
Outgolfer Erik

G첫 번째 줄과 마지막 줄 에서 s 뒤에 공백을 제거하면 98 바이트가 아닙니까?
Emigna


1
@Emigna 알고 있지만 정확한 출력에는 포함되어 있으므로 제거하지 않습니다.
Outgolfer Erik

내 나쁜, 이것을 시도 하십시오 .
ETHproductions


5

V , 75, 62 , 59 바이트

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

온라인으로 사용해보십시오!

이 코덱에는 비 ASCII 문자가 포함되어 있으므로 다음은 16 진 덤프입니다.

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>일반 모드로 돌아갑니다. 이 시점에서 커서는 마지막 세 번째 줄에 G있습니다. 편리하게도 커서 바로 위의 첫 번째 열에 명령을 내릴 수 있습니다. 그 명령은 -입니다. 그런 다음 두 번째 줄 (에서 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, 149146 바이트

그렇게 인상적이지는 않지만 골프가 어떻게 진행되는지 확실하지 않습니다. 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

파이썬 2, 108 바이트

대체하지 않고 문자열 조인 만 사용하여 다른 파이썬 답변과 약간 다릅니다.

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

1
지퍼가 앞으로 나아갈 줄 알았습니다! 118 이전까지 거의 같은 해결책을 가지고 있었고 오늘 저녁에 골프를 타려고했습니다. 지도가 없습니다. 당신이 나를 이길 것 같아요. +1
ElPedro

4

펄, 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'. \n문자 그대로 개행 문자로 대체 하여 90에 도달 하십시오 .
Dada

@Dada Ahhh, 훨씬 멋지다! 감사!
Dom Hastings

"훨씬 좋은"것은 40 바이트 솔루션을 찾고 있었지만 감사합니다 : D
Dada

4

줄프, 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

자바 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(""," ");}

-15 덕분에 바이트 @BassdropCumberwubwubwub . @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 .. 이것은 19 대신 '수직 벽'사이에 3 개의 공백 만 출력합니다. 다음은 코드의 아이디어입니다.
Kevin Cruijssen

따라서 내 노트에는 더 많은 공간이 있어야 s하지만 stackexchange는 공간을 제거했습니다. 여기의 ideone , 지금도 142 바이트
Bassdrop Cumberwubwubwub

트윗 담아 가기 사이에 멘션을 몰랐습니다 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 바이트 )
Numberknot

3

Befunge, 120 바이트

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

첫 번째 줄에는 문자열이 반대로 인쇄되어 있습니다 (그렇지 않은 것처럼 보이지만 코드는 그 줄에서 뒤로 가고 있습니다). 두 번째 줄은 위쪽과 아래쪽 행을 인쇄합니다. 세 번째 줄과 네 번째 줄의 왼쪽에는 가운데 행이 인쇄되고 오른쪽 하단의 작은 덩어리는 흥미로운 일을합니다. 마지막 줄을 인쇄하기 위해 커서를 두 번째 행으로 다시 이동하지만 끝낸 후에는 피장 ​​장이 된.

첫 번째 줄에서 볼 수 있듯이 문자열은 공백으로 구분되어 첫 번째, 중간 및 마지막 행을 구분합니다. 공백은 다른 것이 될 수 있으며 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으로 평등을 테스트하십시오.

   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

그런 다음 0으로 결합하여 길이가 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#' '
Conor O'Brien

@ 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, 192190 바이트

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)로 이동하십시오. 각 문자에 공백을 추가 한 다음 Join11 개의 문자열 로 다시 추가하십시오 . 마지막으로 Join개행 문자에 의한 또 다른 .


3

루비, 92

전체 프로그램, 다음을 사용하여 표준 출력으로 인쇄 $> <<

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

플롯 할 총 글자 수는 40 개입니다. 문자 10-28은 개행 문자 또는로 바뀝니다 ' '*19. 앞뒤 문자는 공백으로 구분됩니다.


3

펄, 115112 바이트

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하고 나중의 공간을 추가합니다 (가 그렇게 .진수로 해석되지 않는다)


당신은 여전히 ​​몇 바이트를 절약 s/(.)/\1 /할 수 있습니다 : 로 대체 될 수 있습니다 s/./$& /. 마지막 세미콜론을 삭제하십시오. 사용 say대신에 print(당신이 중 하나를 추가해야합니다 것을 위해 -M5.010또는 사용하는 -E대신 -e,하지만 둘 다 (참조 무료 여기 )). 대신 리터럴 줄 바꿈 \n.
Dada


2

파이썬 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)더 간단하게하고 싶다면 join을 사용하지 않고 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. 그러나, 그것이
괜찮을지

아, 보드 만 더 크면; string_repeat(" ",19)와 길이가 같습니다 " ".
u54112

1
@NiCkNewman 괜찮습니다. 글을 쓰면 말 해주세요 :)
Timtech

@lastresort 알아요 ... GML을 사용하면 여러 가지 기능을 함께 사용할 수 있지만 그 명령은 매우 장황합니다.
Timtech

2

, 64 바이트

63 바이트의 코드, -S플래그의 경우 +1

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

온라인으로 사용해보십시오!

설명

사용 된 연산자 :

  • . (이진) 연결 (목록에서 항목별로 작동).
  • X(이진) 문자열 곱하기 ( s로 초기화 된 변수 " "입니다.)
  • ^ (단항) 문자열을 문자 목록으로 분할합니다.
  • .*문자열을 문자로 나누는 또 다른 방법입니다. 그것은 단항 연산자를 (iterable) 피연산자의 각 항목에 매핑하는 메타 연산자 .와 쌍을 이루지 않는 문자열에 대한 no-op 인 unary로 구성됩니다 *. 를 사용 .*"..."하면 바이트를 절약 (^"...")할 수 있습니다 . .보다 우선 순위가 높기 때문에 괄호가 필요합니다 ^.
  • 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, 171156 바이트

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

펄 5, 92 86 바이트

  • Dada 덕분에 6 바이트 절약

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

사용 sprintf, 패딩 및 문자열 반복 연산자 x.


좋은 해결책. 대체 당신은 몇 바이트 생각을 절약 할 수 있습니다 \n당신이 사이에 공백이 필요하지 않습니다, 문자 줄 바꿈과 x연산자와 다음 수를, 그리고 마지막으로 교체 split//,xxx와 함께 xxx=~/./g.
Dada

1

하스켈 128 125 114 바이트

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

여기 사용해보십시오

  • ((:" ")=<<)입니다 concatMap (\a -> [a,' '])- 패드는 입력의 모든 문자 뒤에 공백을 추가하여

1

파워 쉘, 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

두 번째 대체 연산자는 각 문자 뒤에 공백을 삽입합니다. 결과에는 공백이 있습니다.

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.