이 질문은 "Godel, Escher, Bach"책의 표지에서 영감을 얻었습니다.
여기서 과제는 주어진 3 개의 문자가 3면에서 읽을 수있는 3D 조각을 생성 할 수 있는지 알려주는 함수를 작성하는 것입니다.
이 연습에서는 26 5px * 5px 비트 맵 만 사용할 수 있습니다.
또는 이진 (A에서 Z)으로 :
01110 11110 01111 11110 11111 11111 11111 10001 11111 11111 10001 10000 10001 10001 01110 11110 01110 11110 01111 11111 10001 10001 10001 10001 10001 11111
10001 10001 10000 10001 10000 10000 10000 10001 00100 00100 10010 10000 11011 11001 10001 10001 10001 10001 10000 00100 10001 10001 10001 01010 01010 00010
10001 11110 10000 10001 11100 11110 10011 11111 00100 00100 11100 10000 10101 10101 10001 10001 10001 11111 01110 00100 10001 01010 10001 00100 00100 00100
11111 10001 10000 10001 10000 10000 10001 10001 00100 10100 10010 10000 10001 10011 10001 11110 10011 10010 00001 00100 10001 01010 10101 01010 00100 01000
10001 11110 01111 11110 11111 10000 11111 10001 11111 11100 10001 11111 10001 10001 01110 10000 01111 10001 11110 00100 01110 00100 01010 10001 00100 11111
조각은 다음 순서로 세 글자로 구성됩니다.
- 위에 편지 하나,
- 왼쪽의 편지 2
- 오른쪽의 편지 3
- 문자 1의 하단은 문자 2의 상단에 바인딩됩니다.
예:
함수는 3 개의 대문자 (3 개의 문자 또는 1 개의 문자로 된 3 개의 문자열)를 입력으로 받아들이고 해당 조각이 존재할 수 있는지 알려주는 부울 (true / false 또는 0/1)을 출력 할 수 있습니다.
예:
f("B","E","G") // true (because if you "sculpt out" B on top + E on the left + G on the right, and watch the three sides of the sculpture, you'll see exactly B, E and G as they are defined)
f("B","G","E") // false (because if you "sculpt out" B on top + G on the left + E on the right, and watch the three sides of the sculpture, you won't see a complete G and a complete E. Their shapes bother each other)
NB : 조각에 "비행 픽셀"(아무것도 붙어 있지 않은 큐브 또는 큐브 그룹)이 포함되어 있어도 true를 반환 할 수 있습니다.
표준 허점이 적용됩니다.
보다 정확하게는 세 글자 이외의 외부 입력을 사용할 수 없으며 소스 코드에서 17576 가능한 답변을 하드 코딩 할 수 없습니다
어떤 언어로든 가장 짧은 문자가 이깁니다!
재미있게 보내세요 :)