바둑판을 구축


20

이 도전을 위해 체커 게임을 시작할 때 각 조각의 좌표와 색상을 인쇄합니다.

바둑판의 모든 정사각형 (색인 0-7)에 대해 x와 y (쉼표로 구분)를 입력 한 다음 보드 상단 (y = 0에 더 가까운)에 "r"또는 "b"(빨간색 또는 검은 색)를 입력합니다. )은 빨간색이고 하단은 검은 색입니다. 조각 사이의 줄 바꿈이 필요하며 공백이 필요하지 않습니다.

이것은 이므로 적은 바이트로 더 나은 답변을 바이트로 채점합니다.

후행 줄 바꿈은 허용되지만 필수는 아니며 순서는 아래 순서와 같아야합니다.

원하는 출력 :

0,0r
0,2r
0,4r
0,6r
1,1r
1,3r
1,5r
1,7r
2,0r
2,2r
2,4r
2,6r
5,1b
5,3b
5,5b
5,7b
6,0b
6,2b
6,4b
6,6b
7,1b
7,3b
7,5b
7,7b

3
당신이 건너 특별한 이유가 x=3x=4?
HyperNeutrino

1
@HyperNeutrino 바둑판에는 (게임 시작시) 상단 및 하단 3 행만 채워져 있기 때문에
Justin

3
이것이 기본적으로 영어 Draughts라는 Checkers 의 시작 위치 입니다. 그 맞습니까?
Arnauld

2
PPCG.SE에 오신 것을 환영합니다! 우리 중 일부가 사용하기를 좋아하는이 사이트의 기능은 샌드 박스 입니다. 당신은하지 않습니다 그것을 사용하는,하지만 전체 downvote / closevote 고통을 통해 갈 필요없이, 당신이 어떤 새로운 도전 아이디어에 대한 피드백을 얻을 통해 유용한 채널입니다.
디지털 외상

1
줄 바꿈 이외의 구분 기호로 좌표를 분리 할 수 ​​있습니까? 즉 0,0r;0,2r;0,4r;0,6r;1,1r;1,3r;1,5r;1,7r;2,0r;2,2r;2,4r;2,6r;5,1b;5,3b;5,5b;5,7b;6,0b;6,2b;6,4b;6,6b;7,1b;7,3b;7,5b;7,7b?
Kevin Cruijssen

답변:


8

05AB1E , 26 바이트

2ÝD5+«v4Fy',N·yÉ+„bry3‹èJ,

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

설명

2Ý                           # push [0,1,2]
  D5+                        # duplicate and add 5: [5,6,7]
     «                       # concatenate
      v                      # for each y in [0,1,2,5,6,7] do:
       4F                    # for each N in [0 ... 3] do:
         y                   # push y
          ',                 # push ","
            N·yÉ+            # push N*2+isOdd(y)
                 „br         # push "br"
                    y3‹è     # index into the string with y<3
                        J,   # join everything to a string and print

나는 기분이 [0,1,2,5,6,7]더 적은 바이트 밀어 수 있습니다 ...하지만 내가 생각할 수있는 모든이었다 7Ý34SK그럴 생각 때문에.
Magic Octopus Urn

7

자바 스크립트 (ES6), 66 바이트

후행 줄 바꿈을 포함합니다.

f=(n=24)=>n--?f(n)+[2*(x=n>11)+(y=n>>2),n%4*2+y%2+'rb'[+x]]+`
`:''

데모



7

C (gcc) , 83 81 79 78 바이트

x;main(){for(;x<24;)printf("%d,%d%c\n",x/4+x++/12*2,x*2%8+x/4%2,114-x/12*16);}

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


2
x / 4 + x / 12 * 2를 수행하고 ()
Tahg를

x%8*2%8가능x*2%8
Kevin Cruijssen

@ceilingcat 감사합니다.
Jonathan Frech


4

자바 8, 102 96 95 93 91 바이트

v->{for(int i=0;i<24;System.out.printf("%d,%d%c%n",i/4+i/12*2,i*2%8+i/4%2,i++<12?114:98));}

포트에서 @JonathanFrech 의 C 대답 나는 5 자신 바이트 golfed 후.

여기에서 시도하십시오.

설명:

v->{                    // Method without empty unused parameter and no return-type
  for(int i=0;i<24;     //  Loop from 0 to 24 (exclusive)
    System.out.printf("%d,%d%c%n",
                        //   Print with format:
                        //   (%d=digit; %c=character; %n=new-line)
      i/4+i/12*2,       //    Print first coordinate
      i*2%8+i/4%2,      //    Print second coordinate
      i++<12?114:98)    //    Print either 'r' or 'b'
  );                    //  End of loop
}                       // End of method



3

젤리 , 35 바이트

8Ḷḟ3ḟ4µḂr7m2ṭ€µ€Ẏµḣ1<3Ḣị⁾rbṭj”,$µ€Y

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

논증없이 전체 프로그램

설명

8Ḷḟ3ḟ4µḂr7m2ṭ€µ€Ẏµḣ1<3Ḣị⁾rbṭj”,$µ€Y  Main link; no arguments
8                                    8
 Ḷ                                   Push 0 .. 8 - 1
  ḟ                                  Remove all instances of
   3                                 3
    ḟ                                Remove all instances of
     4                               4
                €                    For each in [0, 1, 2, 5, 6, 7]
       µḂr7m2ṭ€µ                     Generate all of the piece coordinates across that row
        Ḃ                            row number % 2
         r                           inclusive range up to
          7                          7
           m                         modular; take every   elements
            2                                            2
              €                      For each column coordinate
             ṭ                       Tack the row coordinate (reverse append)
                 Ẏ                   Tighten; flatten once
                                 €   For each piece coordinate (in the right order now)
                 µḣ1<3Ḣị⁾rbṭj”,$µ    Convert to its final output
                  ḣ                  Head; take the first   element(s)
                   1                                      1
                    <                Less Than; compare each element to
                     3               3
                      Ḣ              Head; take the comparison out of the list
                       ị             Index (1-indexed) into
                        ⁾rb          "rb"
                           ṭ         Tack the color character behind
                            j”,$     The coordinates joined by a comma
                            j        Join with separator
                             ”,      ","
                                  Y  Separate by newlines


3

자바 스크립트 (ES6), 64 바이트

이것은 게시를 보증하기 위해 @Arnauld와는 충분히 다른 것처럼 보입니다.

f=(n=0,y=n>>3,c=y>2)=>y<6?[y+c*2,n%8+y%2+'rb'[+c]]+`
`+f(n+2):''

설명:

f=(n = 0,            //the numbered square on checkerboard
   y = n >> 3,       //current row (n / 8 rounded)
   c = y > 2         //false if red pieces, true if black
  ) => 
  y < 6 ?            //if y less than 6 
    [                //  using an array automatically adds the comma
     y + c * 2,      //  0 - 2 if red pieces, 5 - 7 if black
     n%8 + y%2 +     //  n%8 returns 0, 2, 4, or 6.
                     //  y%2 returns 0 or 1.
                     //  added, they return the appropriate position (0 - 7)
     'rb'[+c]        //  'r' if red, 'b' if black.  Plus sign coerces boolean to number.
    ]+`              //  new line
    `+
    f(n+2) :         //  recurse on n+2
    ''               //else return an empty string

단편:



3

APL (Dyalog) , 45 44 바이트 *

ngn 덕분에 -1입니다.

⎕IO←0많은 시스템에서 기본값 인 0 기반 인덱싱 ( ) 을 가정하는 Niladic 함수 . STDOUT으로 인쇄합니다.

' 'R','⊃,/(8 ¯8↑¨⊂⍕¨⍸∘.=⍨2|⍳8),¨¨'rb'

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

(),¨¨'rb' 첫 번째 항목 그룹 각각에 "r"을 추가하고 두 번째 항목 각각에 "b"를 추가하십시오.

⍳8 0에서 8까지

2| 반으로 나눈 나머지

∘.+⍨ 두 축을 따라 자체 테이블 플러스

 진정한 가치의 지표

⍕¨ (패턴과 문자열로 변환하고 각각의 포맷을 d d각각 d숫자이다)

 동봉하십시오 (그래서 우리는 각각에 대해 재사용 할 수 있습니다 ...)

8 ¯8↑¨ 처음 9시와 마지막 9시

이제 우리는 두 개의 d d문자열 목록을 가지고 있습니다

,/ 분류 감소 (두 목록을 결합)

 공개 (감소로 인해 순위가 1에서 0으로 감소했기 때문에)

' '⎕R',' PCRE R의 쉼표 eplace 스페이스

 믹스 (모든 목록을 단일 행렬로)


* Dyalog Classic에서는로 계산 됩니다 ⎕U2378.


~2|∘.+⍨⍳8∘.=⍨2|⍳8
NGN

당신이 해야하지 출력 행 X = 3, X = 4
NGN

@ngn2⍴⊂'Thanks'
Adám

2

풍선 껌 , 59 바이트

00000000: 15ca b101 0030 0400 c1de 2c0a 2462 1f23  .....0....,.$b.#
00000010: d8bf 886f ae3a 531b 310d b8f0 465c 1d0e  ...o.:S.1...F\..
00000020: 24d4 48ec 5b02 2eec 4bf5 5e0e 2454 cb53  $.H.[...K.^.$T.S
00000030: 8380 0baf a5d4 e140 42f5 07              .......@B..

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


이것은 16 진수입니다.
Stan Strum

@StanStrum 예, 이것은 실제 소스의 16 진 덤프입니다. 16 진수 덤프를 사용하면 인쇄 할 수없는 항목이 손실되지 않습니다. 실제 소스는 답변 IMO에 아무 것도 추가하지 않습니다.
ovs

알았어요 감사합니다
Stan Strum

2

Pyth , 37 36 35 바이트

isaacg는 자랑스럽지 않을 것입니다

V+U3}5 7FG4p++N\,+yG?!%N2Z1?<N5\r\b

설명:

V+U3}5 7            For in the array [0, 1, 2, 5, 6, 7] as N
 FG4                 For in the array [0, 1, 2, 3] as G
  p                   Print without newline:
   ++N\,+yG?!%N2Z1     N, (2 * G) + 1 if N is even, else 0
  ?<N5\r\b            Output with newline "r" if N < 5 else "b"

이것은 약간 잘라낸 간단한 패턴을 사용합니다. 다음과 같이 :

경우 XCOORD 짝수, 짝수 번호를 사용합니다 0, 2, 4, 6. 그렇지, 1, 3, 5, 7대한 Y.

경우 XCOORD 적은 5보다, 색상 ( r또는 b)이다 r. 그렇지 않으면입니다 b.

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

편집 : 밤새 3 가지 답변 w00t에 +40 담당자



1

자바 스크립트 (89 바이트) :

for(x=y=0,r="r";x<7|y<8;console.log(x+","+y+r),y+=2){if(y>7)y=++x%2;if(x==3){x+=2;r="b"}}

읽을 수있는 :

for(var x = y = 0, red = true; x < 7 || y < 8; y += 2) {
    if(y > 7) { //new row
        x++;
        y = x % 2;
    }
    if(x == 3) { //new color
        x += 2;
        red = false;
    }
    console.log(x + "," + y + (red ? "r" : "b") );
}

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


4
도전 직후에 자신의 도전에 답변하는 것은 바람직하지 않습니다.
Arnauld

승인. 게시를 중단하고 나중에 게시해야합니까?
저스틴

알았어 할게. 고마워요
Justin

어리석게 들릴 수 있지만 모바일에서 게시물을 어떻게 삭제합니까?
저스틴

@Justin 모바일에서 게시물을 삭제할 수 없습니다. 많은 사람들에게 성가심입니다.
밀 마법사

1

젤리 , 27 바이트

8Ḷµḟ3,4pµSḂ$Ðḟj€”,ż⁾rbx12¤Y

필요한 출력을 인쇄하는 전체 프로그램.

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

방법

8Ḷµḟ3,4p⁸SḂ$Ðḟj€”,ż⁾rbx12¤Y - Link: no arguments
8                           - literal eight
 Ḷ                          - lowered range = [0,1,2,3,4,5,6,7]
  µ                         - new monadic chain
    3,4                     - literal list = [3,4]
   ḟ                        - filter discard = [0,1,2,5,6,7]
        ⁸                   - chain's left argument = [0,1,2,3,4,5,6,7]
       p                    - Cartesian product = [[0,0],[0,1],...,[2,7],[5,0],...,[7,6],[7,7]]
            Ðḟ              - filter discard if:
           $                -   last two links as a monad:
         S                  -     sum
          Ḃ                 -     modulo by 2
                ”,          - literal comma character
              j€            - join €ach pair with a comma = [0,',',0],[0,',',2],...,[2,',',6],[5,',',1],...,[7,',',5],[7,',',7]]
                         ¤  - nilad followed by links as a nilad:
                   ⁾rb      - literal list = ['r','b']
                       12   - literal twelve
                      x     - repeat = ['r','r','r','r','r','r','r','r','r','r','r','r','b','b','b','b','b','b','b','b','b','b','b','b']
                  ż         - zip together = [[[0,',',0],'r'],[[0,',',2],'r'],...,[[2,',',6],'r'],[[5,',',1],'b'],...,[[7,',',5],'b'],[[7,',',7],'b']]
                          Y - join with newlines = [[0,',',0],'r','\n',[0,',',2],'r','\n',...,'\n',[2,',',6],'r','\n',[5,',',1],'b','\n',...,'\n',[7,',',5],'b','\n',[7,',',7],'b']
                            - implicit print (smashes the list of lists and characters
                            -                 together and prints the digits)


1

PowerShell , 63 바이트

0..2+5..7|%{$i=$_;0,2,4,6|%{"$i,$($_+$i%2)"+('r','b')[$i-ge5]}}

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

루프 오버 0,1,2,5,6,7및 각 반복 $i은 현재 숫자로 설정 됩니다. 그런 다음 루프를 반복 0,2,4,6합니다. 각각의 내부 루프, 우리는로 시작하는 문자열을 구축 $i,한 후 플러스 여부를 우리 내부 루프의 현재 번호와 연결된 $i짝수 또는 홀수 (우리에게 도착 이는 0,2,4,6한 시간과 1,3,5,7다른 시간), 다음 중 하나와 연결 r에디션 또는 b여부에 따라 부족 $i하다 -greater-보다 - 또는 eQUAL에 5. 이러한 문자열은 모두 파이프 라인에 남아 Write-Output있으며 프로그램 완료시 암시 적 으로 줄 바꿈을 무료로 제공합니다.


1

J , 48 44 40 37 31 바이트

(}:"1":$.|:8$#:162 69),.12#'rb'

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

작동 원리

           8$#:162 69    first 2 columns in binary, take 8 of them
         |:              transpose
       $.                format as a sparse array, kind of looks like the goal
     ":                 "to text"
 }:"1                    delete the last column
       ,.12#'rb'         append 12 rs followed by 12 bs as the last column

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.