확장 된 Wechsler 형식 해독


18

이 과제는 user48538 의 샌드 박스 게시물을 기반으로합니다 . 그는이 사이트에서 더 이상 활동하지 않기 때문에이 도전을 이어 받았다.


apgsearch , 생명의 콘웨이의 게임에 대한 분산 수프 검색 프로그램과 검색 결과 데이터베이스, Catagolue의 사용 apgcodes은 분류하고 나타낸다 패턴입니다. apgcodes 는 1992 년 Allan Wechsler가 개발 한 패턴 표기법의 확장 인 확장 된 Wechsler 형식을 사용합니다 .

다음 예제와 이미지는 LifeWiki 에서 가져 왔습니다 .

  1. 세트의 정규 표현식과 일치하는 n 문자 의 문자열은 [0-9a-v]5 열, n 열 너비 의 스트립을 나타냅니다 . 각 캐릭터는 비트 스트링에 대응하는 수직 열의 다섯 개 개의 셀을 나타낸다 [ 00000, 10000, 01000... 00010, 10010, 01010, 11010... 11111].

    예를 들어, 헤비급 우주선에27deee6 해당합니다 .

27deee6

[01100001101111011111100111100000000]
  1. 캐릭터 z는 연속적인 5 행 스트립을 분리합니다.

    예를 들어 0ca178b96z69d1d9631 비트 정물에 해당합니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

[000110110001010101010010001011001110000000000011111000100000100101010100011011000000000000]
  1. 문자 w와는 x생략하는 데 사용됩니다 00000각각.

    그래서 w33z8kqrqk8zzzx33에 해당하는 트랜스 - 여왕벌 셔틀 :

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

(공백 10 개 생략)

여기에 이미지 설명을 입력하십시오

[0011000001100000000000000000000000000010000011100010001010111010111110000000000000000000000000000000000000000000000000000000000000000000000000011000001100000000000000000000000]
  1. 마지막으로 정규 표현식 y[0-9a-z]과 일치하는 기호 는 4에서 39 사이의 연속으로 실행됩니다 0.

    quadpole31a08zy0123cko선박에 해당 하는 좋은 예입니다 .

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

[1100000000101000000000000000000010100000000000000000001010000000011000000000011000000001010000000011]

도전

위에서 정의 된 확장 된 Wechsler 형식의 문자열을 구문 분석하고이 문자열에 해당하는 패턴을 인쇄 (또는 리턴)하는 프로그램 또는 함수를 작성하십시오.

문자열이 비어 있지 않고 시작하거나 끝나지 않는다고 가정 할 수 있습니다 z.

문자열, 행렬, 2 차원 배열과 같은 적절한 출력 형식을 사용할 수 있습니다. 당신은 표현하기 위해 두 값을 사용할 수 있습니다 0그리고 1당신은이 질문에 대해 답을 선언 주어진.

출력에서 후행 0 행을 생략하거나 후행 0 행을 추가 할 수 있습니다. 모든 라인의 출력 길이가 동일한 경우 각 라인에 후행 0을 추가 / 생략 할 수 있습니다.

더 편리한 경우 배열의 조옮김을 반환 할 수 있습니다.

이것은 이므로 가장 짧은 코드가 승리합니다.

테스트 사례

153 => [[1, 1, 1], [0, 0, 1], [0, 1, 0], [0, 0, 0], [0, 0, 0]]
27deee6 => [[0, 1, 1, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1], [0, 0, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0]]
0ca178b96z69d1d96 => [[0, 0, 0, 1, 1, 0, 1, 1, 0], [0, 0, 1, 0, 1, 0, 1, 0, 1], [0, 1, 0, 0, 1, 0, 0, 0, 1], [0, 1, 1, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1, 0, 0], [0, 1, 1, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]
w33z8kqrqk8zzzx33 => [[0, 0, 1, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
31a08zy0123cko => [[1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]]
o5995ozes88sezw33 => [[0, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0], [1, 0, 1, 1, 0, 1], [1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1], [1, 1, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 1, 0], [0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
y3343x6bacy6cab6x343zkk8yy8kkzgo8gywg8ogz0123yw321zzgo4syws4ogzgh1yy1hgz221yy122zy3c2cx6d53y635d6xc2c => [[0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

z처음에 일어날 것인가 ?
Mr. Xcoder

@ Mr.Xcoder LifeWiki 페이지는 그것에 대해 아무 말도하지 않습니다. 그러나 여기서 문자열이로 시작하거나 끝나지 않는다고 가정 할 수 있습니다 z.
alephalpha

3
실제로 삶의 게임 패턴은 아니지만 재미를 위해서만 :vv99f60vv99f60uv11320uv19rqz33y133y11322310132231
Arnauld

1
"어레이 배열의 전치 (transpose)를 반환 할 수 있습니다"-괜찮다면 거꾸로하는 등의 다른 대칭은 어떻습니까?
Jonathan Allan

1
: 첫 번째 세 가지 답변의 두 이들 중 일부 실패 1yx1, 1yy1, 1yw11yz1. 아마도 그들은 시험이어야합니다.
Jonathan Allan

답변:


2

, 50 바이트

UB0≔⁺⭆χιββFS¿υ×0⁺⊟υ⌕βι≡ιz×⸿⁵y⊞υ⁴x×0³w¦00«P↓⮌⍘⌕βι²→

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 사용 10. 설명:

UB0

배경, 즉 출력을 둘러싼 사각형의 인쇄되지 않은 셀을로 설정하십시오 0.

≔⁺⭆χιββ

숫자를 사전 정의 된 소문자 알파벳으로 시작하십시오.

FS

입력 문자열을 반복합니다.

¿υ

사전 정의 된 빈 목록이 비어 있지 않은 경우 ...

×0⁺⊟υ⌕βι

... 그런 다음 0목록에서 튀어 나온 숫자와 현재 문자의 색인을 숫자와 문자로 합한 숫자를 인쇄합니다 . 그 숫자가 항상 무엇인지 아래를 참조하십시오.

≡ι

현재 문자를 전환하십시오.

z×⸿⁵

그것은 만약 z다음 출력 스트립에 우리를 복용 한 후 출력 5 캐리지 리턴.

y⊞υ⁴

이 경우 사전 정의 된 빈 목록으로 y푸시 4하면 4+n 0다음에 s가 출력됩니다.

x×0³

그렇다면 x3 0s 를 출력하십시오 . (이는 리터럴 0x또는 다음 리터럴을 건드리지 않도록 반복을 통해 수행됩니다 .)

w¦00

그렇다면 w2 0s 를 출력하십시오 . ( ¦두 문자열 리터럴을 분리하는 데 필요합니다.)

«P↓⮌⍘⌕βι²→

그렇지 않으면, 현재 문자를 숫자와 문자로 색인화하고, 이진수로 변환 한 다음 결과를 가장 중요도가 낮은 비트부터 아래로 인쇄하십시오. 그런 다음 커서를 다음 열의 오른쪽으로 이동하십시오.


6

자바 스크립트 (ES8), 197 바이트

입력을 문자열로받습니다. '#'과 공백이있는 문자열 배열을 반환합니다. 출력에는 각 줄에 추가 (일관된) 후행 공백이 포함될 수 있습니다.

s=>[x='x',...s.replace(/w|x|y./g,s=>''.padEnd(s<x?2:s>x?P(s[1],36)+4:3),P=parseInt)].map(c=>[!++w,1,2,3,4].map(i=>c<x?o[y+i-5]+=' #'[P(c,36)>>i&1]:o=[...++y&&o,'']),w=y=o=[])&&o.map(r=>r.padEnd(w))

온라인으로 사용해보십시오! (선점 출력)

어떻게?

글로벌 변수

  • 문자 "x"는 여러 번 사용되므로 변수 x에 저장하는 것이 좋습니다.
  • 이 함수 parseInt는 두 번 사용되므로 변수 P에 저장하는 것이 좋습니다.
  • y 는 행 인덱스이며 0으로 초기화됩니다 .
  • w 는 최종 출력을 채우는 데 사용되는 너비의 상한을 추적합니다.
  • o [] 는 출력 배열이며 처음에는 비어 있습니다.

반복되는 제로의 전처리

우리는 먼저 모든 패턴을 대체 "w", "x"그리고 "yX"공간의 적절한 번호를 입력 문자열입니다. 이 공백은 나중에로 해석됩니다 "0".

s.replace(
  /w|x|y./g,
  s => ''.padEnd(
    // w --> 2
    s < x ? 2 :
    // yX --> value of X + 4
    s > x ? P(s[1], 36) + 4 :
    // x --> 3
    3
  )
)

디코딩

결과 문자열을 분할하고 이니셜을 추가하고 각 문자 c 에서 "x"5 번 반복합니다 ( i = 0 ~ 4 ) .

  • 경우 C는 보다 낮은 "x", 우리는 다음의 5 행에 대응하는 패턴을 추가.

    o[y + i - 5] += ' #'[P(c, 36) >> i & 1]
  • 경우 C가 보다 큰거나 같은 "x", 우리는 5 새로운 빈 문자열 할당 O []를 하고 추가 5Y . 이것은 "x"문자열의 시작 부분에 추가 된 초기 또는 "z"원래 내용의 임의의 항목 에 의해 트리거됩니다 .

    o = [...++y && o, '']

마지막으로 o []의 각 문자열 을 공백으로 채워서 모두 w 문자를 갖습니다 .

o.map(r => r.padEnd(w))

6

05AB1E , 148 (132) 98 바이트

저는 고등학생이며 이것이 골프와 05AB1E를 사용한 첫 번째 시간이므로 의견을 보내 주셔서 감사합니다!

„YY¾38×:'Yð:žLRDUsð«#εNĀiDнXsk4+s¦sú]'W¾2×:'X¾3×:J'Z¶:.Bð¾:vNUyvDykDNX‚Š32VY‹iY+b¦RX_i¶ì}‚ˆ]¯{€¦˜J

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

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

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

입력을 대문자로 취하고 조옮김 행렬을 1과 0의 여러 출력 라인으로 출력합니다. 0을 더 추가 할 수 있습니다.

소문자 문자열로 테스트 u하려면 TIO 헤더를 추가하십시오 .

'1'█:'0'.:정교하게 출력 된 결과물을 원하면 TIO 바닥 글에 추가하십시오 .

설명

(전치 행렬을 생성하기 때문에 예상되는 것과 반대되는 "행"및 "열"이라고 부릅니다.)

기본 알고리즘은 다음과 같습니다.

  1. "yy"를 38 0으로 교체
  2. "y"로 분할하고 0- 런을 확장하십시오.
  3. "w"와 "x"를 교체하십시오
  4. 가장 긴 열 (즉, z 사이의 가장 긴 문자열)을 파악하고 다른 모든 열을 그 길이가되도록 채 웁니다. (아래 알고리즘이 작동하는 방식 때문에 필요합니다)
  5. Z에서 분할
  6. 이 시점에서 입력 문자열은 각 열이 [0-9A-V]의 문자열 인 열 배열이며 각 열의 길이는 같습니다.
  7. 출력 형식으로 가져 오는 알고리즘은
    1. 조회 문자열에서 indexOf를 사용하여 문자를 숫자로 변환
    2. 문자를 이진수로 변환 한 다음 길이 5로 채 웁니다.
    3. 첫 번째 열인 경우 이진수 앞에 줄 바꿈을 추가하십시오.
    4. 문자의 행과 열을 저장하는 이진 문자열의 시작 부분에 접두사를 추가하십시오.
    5. 05AB1E의 "글로벌 배열"레지스터 / 변수에 접두사를 사용하여 2 진 문자열을 푸시하십시오.
  8. 전역 배열을 정렬하십시오. 정렬 순서를 결정하는 접두사 문자열은 모든 것이 올바른 순서로 끝나고 줄 바꿈이 올바른 위치에 있는지 확인합니다.
  9. 전역 배열의 각 요소에서 접두사 문자열을 제거하십시오.
  10. ""로 배열을 결합하고 인쇄하십시오.

확장 된 코드에서 아래에 볼 수있는 몇 가지 사소한 세부 사항이 있습니다. 줄 끝에서 탭 뒤의 모든 것은 주석이며 무시할 수 있습니다. (이 주석 체계는 그건 그렇고 05AB1E의 일부는 아닙니다. 멋지게 보이기 때문에 이런 식으로했습니다.) "@"로 시작하는 주석이있는 행은 디버깅을위한 것이며 최종 출력을 변경하지 않고 생략 할 수 있습니다.

„YY¾38×:                                        Replace "YY" with 38 0's. (y is the 34th character in the index, so need to add 34+4 = 38). ¾ is initialized to zero, which saves one byte from typing '038
'Yð:                                            Replace "Y" with " "                                
"Replaced input Stage1 = "?D,                   @DEBUG

žLR                                             Pushes [0-9A-Za-z]
DU                                              Set X to [0-9A-Za-z] and leave [0-9A-Za-z] on the stack.
s                                               Swap top two elements. Now the stack is [0-9A-Za-z],input

ð«                                              Append a space so the below splitter works even if there are no other spaces.
#                                               Split input on " ", which "Y" has been replaced with
ε                                               Map. This map replaces the y runs
    "Element = "?D,                             @DEBUG
    "N = "?N,                                   @DEBUG
    NĀi                                         If N != 0   
        "Replacing!",                           @DEBUG
        Dн                                      Get the first letter
        X                                       Push X
        s                                       Swap
        k                                       X (which is [0-9A-Za-z]) .indexOf(firstLetter)
        "indexOf run token = "?D,               @DEBUG
        4+                                      Add 4 to the index, now becoming the number of zeros to add
        s                                       Swap. Now top is the string between runs
        ¦                                       Remove the first character
        s                                       Swap again. Now the top is the number of zeros to add.
        ú                                       Add that many spaces (will be replaced with zeros later) to the start of the element.
        "Element Replaced = "?D,                @DEBUG
]
'W¾2×:                                          Need to do this replacement after the Y replacement so stuff like YW gets parsed properly. Again, ¾ is zero.
'X¾3×:
J                                               Join with ""
"Replaced input Stage2 = "?D,                   @DEBUG
'Z¶:                                            Replace "Z" with "¶".
.B                                              "Squarify" command. Splits on \n and appends spaces to the end of each element so each is the same length. In this case, that is equivalent to adding zeros to the end of each column, which is what we want.
ð¾:                                             Replace spaces (which we used for padding above) with zeros.
"Replaced input Stage3 = "?D,                   @DEBUG
"0 Stack top = "?D,                             @SDEBUG
"0 Stack top-1 = "?sD,s                         @SDEBUG
v                                               pop and loop over top element, which is array of column code
    NU                                          Store the column number in X
    yv                                          Loop over each character in the column              
        "1 Stack top = "?D,                     @SDEBUG
        "1 Stack top = "?D,                     @SDEBUG
        D                                       Duplicate top element (which is now [0-9A-Za-z])
        y                                       Push y (special loop variable)
        "Character = "?D,                       @DEBUG
        k                                       Push indexOf y in [0-9A-Za-z]
        "Index = "?D,                           @DEBUG
        "2.1 Stack top = "?D,                   @SDEBUG
        "2.1 Stack top-1 = "?sD,s               @SDEBUG
        D                                       Duplicate index.
        NX‚                                     Push [rowNumber,columnNumber]. This result is used for sorting.
        Š                                       Triple swap. The top of the stack is now sortPrefix, index, index
        32V                                     Set Y to 32
        Y‹i                                     index < 32. This uses up one copy of index
            Y+                                  Add 32 to the index
            b                                   Push the index in binary. This uses the second copy of index. 
            ¦                                   Remove the first character, which will be a 1 because we added 32. The result is now a padded binary string of length 5
            "Binary = "?D,                      @SDEBUG
            R                                   Reverse the binary string. This gives the proper transposed output. 
            X_i                                 This will only run if X (which is set to the column number) == 0. (Runs !X)
                ¶ì                              Stick a linebreak at the beginning of the binary string
            }
            "2.5 Stack top = "?D,               @SDEBUG
            "2.5 Stack top-1 = "?sD,s           @SDEBUG         
            ‚                                   At this point the top of the stack is sortPrefix,binaryString. This will combine the two into a list.
            "Pushing '"?D?"'",                  @DEBUG
            ˆ                                   Push [[rowNumber,columnNumber],binaryString] to global array
            "2.6 Stack top = "?D,               @SDEBUG
            "2.6 Stack top-1 = "?sD,s           @SDEBUG
        ]                                       Close all blocks
¯                                               Push global array

{                                               Sort global array. 
"Sorted Data = "?D,                             @DEBUG
€¦                                              Remove the sort prefix              
˜                                               Flatten. Before doing this, the array is in the format [[<binary string>],[<binary string>],[<binary string>],...]
J                                               Join with ""
'1'█:'0'.:                                      @DEBUG pretty print 

1
PPCG에 오신 것을 환영합니다. 아주 좋은 첫 번째 게시물! 바이트 수와 관련하여 당신이 맞습니다. TIO는 148자가 05AB1E 코드 페이지를 사용하여 148 바이트로 표시됨을 간결하게 표시합니다.
Jonathan Frech

하나의 작은 메모 : 대부분의 골프 언어는 암시 적 인쇄를 구현합니다. 나는 당신이 마지막을 생략 할 수 있다고 생각합니다 ,.
Jonathan Frech

나는 그것을 살펴보고 약간 개선했다. 행이나 열이 1000 개가 넘는 항목의 경우에만 동작이 달라집니다 (이론적으로 작은 프로그램은 예기치 않은 작업을 수행함).
kerwizzy

가장 쉬운 도전은 아닙니다! 잘 하셨어요. 05AB1E의 일부는 그들이 올 때 편리한 포인터를 줄 것입니다.
Jonathan Allan

1
PPCG와 05AB1E의 세계에 오신 것을 환영합니다. 나는 지금 많은 시간을 가지고 있지 않고 몇 개월 전에 05AB1E를 사용하기 시작했기 때문에 아직 프로는 아니지만 골프를 "yy"할 작은 것들이 „yy있습니다. 2 문자 및 3 문자 문자열 내장). >≠할 수 있습니다 Ā(truthified, 기본적으로 0유지 0하고 모든 사람이된다 1). }}될 수 있습니다 ](모든 루프와 if-eles를 닫으십시오). 나는 프로 05AB1E 골퍼 중 일부가 나보다 더 많은 것을 골프로 칠 수 있으며 바이트 수를 반으로 줄 수도 있다고 확신합니다.
Kevin Cruijssen

4

APL (Dyalog Unicode) , 87 80 77 67 63 바이트

7 바이트를 절약 한 H.PWiz와 다른 13 17을 위한 ngn 덕분

a←⎕D,⎕A⋄,⍉↓⊖(5/2)⊤↑35(≠⊆⊢)a'Y.|W|X'R{'0'/⍨30 36|a2↑⍵.Match}⍞

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

NB : 입력을 대문자 문자열로 취합니다.

예쁜 인쇄 출력

설명

a←⎕D,⎕AA는 문자열 인 '0123...89ABCD...XYZ'
'Y.|W|X'⎕R{'0'/⍨+/30 36|a⍳2↑⍵.Match}의 해당 번호 XW 및 Yx를 대체 '0'S (더 아래에 설명) 35(≠⊆⊢)a⍳에 indecies 벡터에 문자열 변환 a과 스플릿 35(IE) 'Z'중첩 벡터 생성
과 매트릭스 패딩 단부으로 변환을 중첩 벡터 0
(5/2)⊤각각 변환 1 차 축을 따라 2 진 벡터를 갖는 3 차원 행렬을 생성하는 2 진 벡터의 수는 1 차 축을
따라 반전되고
매트릭스의 순위를 감소시켜
,⍉결과를 적절한 출력으로 재구성합니다.

'Y.|W|X'R{'0'/⍨30 36|a2↑⍵.Match}
'Y.|W|X'R                          Regular expression replace. mathing the string.
                        2↑⍵.Match   Takes matching string (either 'X' 'W' or 'Y.') and pads with spaces to length 2
                      a            Returns the indecies of each charactor in a. on the spaces this is 36 (length of a)
                30 36|              Takes the remainders of the indecies when divided by 30 and 36 respectively. Overall 'W' -> 'W ' -> 32 36 -> 2 0, 'Y2' -> 'Y2' -> 34 2 -> 4 2.
           '0'/⍨                    Make vector of repeating '0's with length equal to the sum of the result. '0'/⍨4 2  '000000'

다음은 7 바이트 절약 a←⎕D,⎕A⋄,↓↑{⊖(5/2)⊤a⍳⍵}¨'Z'(≠⊆⊢)('Y.|W|X'⎕R{'0'/⍨{0::2+'WX'⍳⍵⋄4+a⍳1⊃⍵}⍵.Match})⍞입니다.. 오류 캐치도 골프처럼 보이지 않습니다
H.PWiz

감사합니다 @ H.PWiz. 그래도 오류 캐치가 마음에 들지 않지만 두 개의 정규식 대체를 사용하고있었습니다.
jslip

@jslip 괄호 ⎕R와 피연산자가 불필요
ngn

2+'WX'⍳⍵->2+'X'=⍵
ngn

{0::2+'X'=⍵⋄4+a⍳1⊃⍵}⍵.Match->30 36|a⍳2↑⍵.Match
ngn

3

펄 6 ,156 142 바이트

Jo King 덕분에 14 바이트가 절약되었습니다. (또한 파싱으로 약간의 버그가 수정되어 y프리티 파이어가 추가되었습니다.)

의 버그 분석을 수정했습니다 y[wxy].

{s:g/y(.)/000{0 x:36(~$0)}/;s:g/x/w0/;s:g/w/00/;s/$/z/;map {
.flatmap:{:32($_).fmt("%05b").flip.comb}},[Z] .split("z").map: (*~0 x.chars).comb}

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

줄 바꿈은 텍스트를 화면에 맞추기위한 것입니다. 프로그램의 일부가 아닙니다.

작동 원리

가변 문자열을 취하는 익명 함수입니다. (이 기능을 사용하면 리터럴이 아닌 변수 만 제공 할 수 있기 때문에이 기능을 조금 더 독특하게 사용할 수 있습니다.) 일부 작업 후 원래 게시물과 같은 의미로 0과 1이 포함 된 목록 목록을 반환합니다.

입력 문자열은 변수에 들어 $_갑니다. 우리는 다양한 수의 제로에 대한 모든 속기를 제거하기 위해 일련의 대체 문장을 사용하여 시작합니다. 첫째, 우리는 밖으로 정렬 할 필요가 y있기 때문에의 경우, yx또는 yw, (가) w(나 x) 단독으로 속기를 구성하지 않습니다. 우리는 y(.)( y그리고 기억하는 하나의 문자)를 찾아서 그것을 대체합니다 000{"0"x:36(~$0)}: 세 개의 0은 그대로 복사되고, 다음 문자는 기본 36에서 기본 10 ( :36(~$0))으로 변환하고 더 많은 0을 추가합니다. 그런 다음 w사용 s:g/w/00/중 및 x사용 중을 바꿉니다 s:g/x/000/. 마지막으로을 사용 s/$/z/하여z바닥에 빈 줄을 많이 추가합니다. (나중에 이유를 볼 것입니다.)

나머지는 단지 큰지도 진술입니다. 우리는 .split("z").map: (*~0 x.chars).comb})입력 문자열 (약칭 없음)을로 줄로 나누고 z, 각 줄 0 x.chars은 오른쪽에 (0 톤, 즉 입력 문자열의 총 길이만큼) 채워집니다. 그런 다음 개별 문자 목록 ( .comb)으로 분류됩니다. 마지막으로 [Z]zip으로 줄입니다. 가장 짧은 목록이 고갈되면 압축이 종료되어 모든 줄의 길이가 같습니다. (오른쪽의 쓸모없는 후행 0의 수는 가장 짧은 줄의 길이와 같습니다. 또한이 조임 트릭은 행이 하나만있는 "행렬"에 대해 실패합니다. 따라서 이전에 끝에 다른 행을 강제로 추가했습니다.)

이제 행 (원래 행렬의 열)을 매핑하고 발생하는 각 문자를 해당 5 비트로 바꿉니다. :32($_)(베이스 32에서 10까지) .fmt("%05b")(너비 0으로 채워진 너비 5의 비트 .flip문자열 형식) (LSB가 맨 아래가 아니라 맨 위 행에 있기 때문에 문자열을 뒤집습니다 )를 사용하여 수행됩니다 ( 문자열 .comb을 문자). 우리는 .flatmap결과 목록을 평평하게하는 을 사용했습니다 (그렇지 않으면 각 열에 목록 목록을 얻습니다). 결과의 전치가 암시 적으로 리턴됩니다.

(제로를 너무 세게 뒤따를 가능성을 남용하여 약간 나쁘게 느낍니다. 그러나 바이트 수를 상당히 줄였습니다.)



@JoKing — 아, 정말 감사합니다!
Ramillies

실패 1yx11yw1
Jonathan Allan

@JonathanAllan, 그렇습니다, 감사합니다. 잠시 후 해결하겠습니다. (나는 처음에 어떤 이유가있을 수 있다고 생각했고 y[0-9a-v]그것이 사실이 아니라는 것을 알았을 때, 나는 단지 신속하고 틀린 해결책을 추가했다.)
Ramillies

000y 대체에서x
Jo King


2

레티 나 203 바이트

y(.)
#$1
{`#
0#
#0
000
)T`dl`_dl`#.
w
000
x
00
z
¶
%(`.+
$&¶$&¶$&¶$&¶$&
T`g-v`#`.+$
T`dl` `.+$
T`g-v`dl
T`89l`#`.+¶.+$
T`d` `.+¶.+$
T`89l`d
T`d`    #`.+¶.+¶.+$
T`4-7`d
T`d`  #`.+¶.+¶.+¶.+$
)T`d` # #
P`.+

온라인으로 사용해보십시오! 링크에는 테스트 사례가 포함됩니다. 대체 솔루션, 203 바이트 :

y(.)
#$1
{`#
0#
#0
000
)T`dl`_dl`#.
w
000
x
00
z
¶
%(`.+
$&¶$&
T`g-v`#`¶.+
T`dl` `¶.+
T`g-v`dl
^.+
$&¶$&
T`89l`#`¶.+
T`d` `¶.+
T`89l`d
^.+
$&¶$&
T`d`    #`¶.+
T`4-7`d
^.+
$&¶$&
T`d`  #`¶.+
)T`d` # #
P`.+

온라인으로 사용해보십시오! 링크에는 테스트 사례가 포함됩니다. 설명:

y(.)
#$1

먼저 어색한 y명령을 처리하십시오 . 슬프게도이 문자 이후의 문자는 a y또는 심지어 는 허용 z되므로 여기서주의해야합니다. 모든 마법 y은 먼저 #s 로 바뀝니다.

{`#
0#
#0
000
)T`dl`_dl`#.

그런 다음 루프는 #s 를 처리합니다 . 먼저 a 0앞에 #. 가 붙습니다 . 이것이 a #0로 변경 000되면 조작이 완료되고 그렇지 않으면 a 이후 문자 #가 감소하고 모든 #s가 처리 될 때까지 루프가 반복 됩니다.

w
000
x
00

ws를 수정하십시오 x.

z
¶

새로운 줄로 나눕니다. ( S`z동일한 바이트 수에서도 작동합니다.)

%(`.+
$&¶$&¶$&¶$&¶$&
T`g-v`#`.+$
T`dl` `.+$
T`g-v`dl
T`89l`#`.+¶.+$
T`d` `.+¶.+$
T`89l`d
T`d`    #`.+¶.+¶.+$
T`4-7`d
T`d`  #`.+¶.+¶.+¶.+$
)T`d` # #

각 줄을 5 개씩 복사 한 다음 적절한 비트를 가진 문자를 매핑하고 해당 비트를 #지우고 이진 변환을 수행 하고 다른 문자는 공백이됩니다. 비트는 16, 8, 4, 2 순서로 처리 된 다음 마지막 변환은 2비트를 지우고 동시에 비트를 변환합니다 1. (대체 버전은 각 사본을 개별적으로 만들어 더 많은 바이트를 소비하지만 비트 처리가 단순화되어 저장됩니다.)

P`.+

모든 선을 같은 길이로 채 웁니다.


1

파이썬 2 , 249 244 바이트

def f(s,Z='0'):
 while'y'in s:i=s.find('y');s=s[:i]+4*Z+Z*int(s[i+1],36)+s[i+2:]
 t=s.replace('w',2*Z).replace('x',3*Z).split('z');return map(''.join,zip(*[[(Z*5+bin(int(c,32))[2:])[:-6:-1]for c in r]+[Z*5]*(max(map(len,t))-len(r))for r in t]))

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

Jonathan Frech가 5 바이트를 절약했습니다 .


에 불필요한 공간이 while 'y'in있습니다. 나는 아래 첨자 [-5:][::-1]가 골프를 칠 수 있다고 생각합니다 [:-6:-1]. 리턴 문은 이전 행에 놓을 수 있습니다.
Jonathan Frech

1

자바 스크립트 (ES8), 192 바이트

s=>[...s,"z"].map(c=>{h=parseInt(c,36);k="wxy".search(c)+1;y?k=h-y--:h-35?y=h>33:m=m.map(P,z+=5,i=k--);for(h=k?0:h;~k--;m[i]=h.toString(2)+P(m[i++]||""));},P=d=>d.padStart(z,0),m=[i=z=y=0])&&m

조옮김 ...을 반환 한 다음 세로 축을 통해 반영됩니다. 이 항목이 무효화되면 알려주십시오. 출력은 0s와 1s를 포함하는 문자열의 배열입니다 .

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

설명

각 문자 c에 대해 k+1수정할 행 수를 평가합니다. k = "wxy".search(c) + 1;여기서 search메소드는 색인 또는을 리턴합니다 -1. k그런 다음 진실한 가치를 -1확인 ~k--하여 도달 할 때까지 감소 합니다.

현재 문자가 "y"이면 다음 문자 -1의 base-36 값이의 값이되도록 플래그를 설정하십시오 k.

"z"가 표시되면 문자열을 왼쪽으로 채우고 패드 양을 씩 늘리고 5배열 색인을으로 재설정합니다 0.

s =>
    [...s, "z"].map(c => {                  // append a "z" to ensure final output is properly padded
        h = parseInt(c, 36);
        k = "wxy".search(c) + 1;            // note that "y" -> 4 zeroes
        y                                   // if previous char is "y"...
            ? k = h - y--                   //      decrement y after subtracting y=1 since k is decremented to -1 and the previous y already pushed 4 zeroes
        : h - 35                            // else if current char is not "z"...
            ? y = h > 33                    //      set y if current char = "y"
        : m = m.map(P, z += 5, i = k--);    // else if current char is "z", pad
        for (
            h = k ? 0 : h;                  // if k is truthy, push zeroes
            ~k--;
            m[i] = h.toString(2)            // convert to boolean representation
                + P(m[i++] || "")           // prepend to row or to a newly padded row
        );
    },
        P = d => d.padStart(z, 0),
        m = [i = z = y = 0]                 // the logical OR 4 lines above replaces this value with ""
    ) &&
    m

입력의 조옮김을 반환하지 않는 것이 더 합리적이라고 생각합니다.
mbomb007

1

하스켈, 399 바이트

split패키지 설치 :cabal install split

import Data.Char
import Data.List.Split
import Data.List
p=map
r=replicate
a c|47<c&&c<58=c-48|96<c&&c<123=c-87
o=a.ord
m l n|l==0=[]|True=(mod n 2):m(l-1)(div n 2)
t a=p(\l->l++r((maximum$p length a)-length l)'0')a
y s|length s==0=""|h=='y'=(r(4+(o$s!!1))'0')++y(drop 2 s)|h=='w'="00"++y t|h=='x'="000"++y t|True=h:y t where h=head s;t=tail s
w=(p concat).transpose.(p$p$(m 5).o).t.(splitOn "z").y
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.