ABAP , 295 바이트
왜 안돼?
REPORT z.DATA:a(16),c TYPE qfranint.a = 'bugs in the code'.data(b) = 99.WRITE:/ b,a.WHILE b > 0.WRITE:/ b,a,/'Take one down and patch it around'.CALL FUNCTION
'QF05_RANDOM_INTEGER' EXPORTING ran_int_max = 21 IMPORTING ran_int = c.b = b + c - 17.IF b < 1.b = 0.ENDIF.WRITE:/ b,a,/,/ b,a.ENDWHILE.
다른 언어에 비해 확실히 경쟁력이 없지만 처음에 쓴 330 바이트에서 줄어 들었으므로 개인적인 승리로 간주합니다.
ABAP는 255자를 초과하는 줄을 허용하지 않기 때문에 공백을 줄 바꿈으로 바꿔야했습니다. Windows에서는 CRLF로 인해 처음에 크기가 296 바이트로 증가했지만 LF 만 있으면 정상적으로 실행됩니다. ABAP는 많은 공간을 필요로하므로 큰 문제는 아닙니다.
WRITE는 단순히 GUI에 텍스트를 덤프하므로 stdout과 비슷하다고 생각합니까? 구조 또는 테이블을 사용하여 여기에서 약간의 바이트를 절약 할 수는 있지만 SAP가 문자와 숫자를 포함하여 혼합 구조를 처리하는 방식으로 인해 유니 코드가 아닌 시스템에서만 작동한다고 상상했습니다. 둘 다에 액세스 할 수 있음에도 불구하고 이동하십시오.
난수에 대한 함수 모듈은 우리 시스템에서 찾을 수있는 유일한 것입니다. 이름이나 매개 변수가 더 짧은 것이 있다고 가정합니다. 몰라!
다소 읽기 쉬운 코드, 주석 포함 :
REPORT z.
"Define a (text) and c (random)
DATA: a(16),
c TYPE qfranint. "A stupid data type for a random INT
"This is shorter than using VALUE (saves 3 bytes)
a = 'bugs in the code'.
"This is slightly shorter than doing ',b TYPE i' and 'b = 99'. (saves 2 bytes)
data(b) = 99.
"first line has to be outside of loop due to our exit condition (saved me ~5 bytes)
WRITE: / b,a. "\n xx bugs in the code
WHILE b > 0.
WRITE: / b,a, "\n xx bugs in the code
/'Take one down and patch it around'.
"This ridiculous function for random numbers...
"To save some bytes, I leave ran_int_min at it's default
"of 1, and set the max to 21 instead, from which I remove
"17 later on, resulting in a range of [-16,4]
"Compare:
" ' - 17' = 5 bytes
" ' ran_int_min = -16' = 18 bytes
"(saves 13 bytes)
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING ran_int_max = 21
IMPORTING ran_int = c.
"Maximum number of bugs added: 4 = 21 - 17
"Maximum number of bugs removed: -16 = 1 - 17
b = b + c - 17.
IF b <= 0.
b = 0.
ENDIF.
WRITE: / b,a,/,/ b,a. "\nxx bugs in the code\n\nxx bugs in the code
ENDWHILE.
도전 해 주셔서 감사합니다!
상사에게 : 제발 날 해고하지 말고, 나는 단지 나 자신을 교육하고 있습니다!