직무
STDIN에서 또는 명령 행 인수로 3 개의 정수 m , n 을 읽고 m × n x 2 x 1 및 1 × 2 도미노 의 직사각형 사각형의 가능한 모든 타일링 과 마지막으로 유효한 타일링 수를 인쇄하는 프로그램을 작성하십시오.
개별 타일의 도미노는 2 × 1의-
경우 2 개의 대시 ( ) 와 1 × 2의 도미노의 경우 2 개의 세로 막대 ( |
)로 표시해야 합니다. 각 타일 (마지막 타일 포함) 뒤에 줄 바꿈이 있어야합니다.
점수를 매기려면 STDIN의 플래그를 받거나 명령 줄 인수로 프로그램이 유효한 타일 수만 인쇄하지만 타일 자체는 인쇄하지 않아야합니다.
프로그램이 1024 바이트를 초과 할 수 없습니다. m × n ≤ 64 가되도록 모든 입력에 대해 작동해야합니다 .
( 4x6 직사각형의 모든 도미노 타일링을 인쇄 하여 영감을 얻었습니다 .)
예
$ sdt 4 2
----
----
||--
||--
|--|
|--|
--||
--||
||||
||||
5
$ sdt 4 2 scoring
5
채점
점수는 플래그가 설정된 입력 8 8 의 프로그램 실행 시간에 따라 결정됩니다 .
가장 빠른 컴퓨터 문제가 아닌 가장 빠른 코드로 만들기 위해 공식 점수를 결정하기 위해 내 컴퓨터 (Intel Core i7-3770, 16 GiB PC3-12800 RAM)에서 모든 제출물을 실행합니다.
코드를 컴파일 및 / 또는 실행하는 방법에 대한 자세한 지침을 남겨주십시오. 특정 버전의 언어 컴파일러 / 인터프리터가 필요한 경우 해당 효과에 대해 설명하십시오.
다음과 같은 경우 제출물을 채점하지 않을 수 있습니다.
내 운영 체제 (Fedora 21, 64 비트)에 대한 무료 (맥주에서와 같이) 컴파일러 / 인터프리터가 없습니다.
Google의 노력에도 불구하고 코드가 작동하지 않거나 내 컴퓨터에서 잘못된 출력을 생성합니다.
컴파일 또는 실행에 1 시간 이상이 걸립니다.
코드 또는 유일하게 사용할 수있는 컴파일러 / 인터프리터에는 시스템 호출
rm -rf ~
또는 이와 유사한 기능이 포함되어 있습니다 .
리더 보드
컴파일과 실행을 모두 반복하고 루프는 10,000 번, 컴파일은 100 ~ 1 만 번 반복하고 (코드 속도에 따라) 평균을 계산하여 모든 제출의 점수를 다시 매겼습니다.
결과는 다음과 같습니다.
User Compiler Score Approach
jimmy23013 GCC (-O0) 46.11 ms = 1.46 ms + 44.65 ms O(m*n*2^n) algorithm.
steveverrill GCC (-O0) 51.76 ms = 5.09 ms + 46.67 ms Enumeration over 8 x 4.
jimmy23013 GCC (-O1) 208.99 ms = 150.18 ms + 58.81 ms Enumeration over 8 x 8.
Reto Koradi GCC (-O2) 271.38 ms = 214.85 ms + 56.53 ms Enumeration over 8 x 8.
--
.. 세로이면 두 개 |
, 다른 하나 아래에 있습니다.