상사가 가능한 빨리 12 가지 프로그래밍 작업 목록을 이메일로 보냈습니다. 작업은 충분히 간단하지만 소셜 네트워킹에 빠진 젊은 소프트웨어 거물 인 귀하의 상사는 솔루션이 단일 트위터 트윗에 적합 할 수 있다고 주장합니다 .
즉, 모든 작업을 해결하는 데 140 바이트 분량의 코드 만 있으면 작업 당 평균 11.67 바이트가됩니다. (예, 트위터 는 문자를 세지 만 보스는 구체적으로 바이트를 말했습니다.)
140 바이트로 12 개의 작업을 모두 해결할 수있는 방법이 없다는 것을 알고 있지만 실제로는 모든 솔루션을 테스트하지는 않을 것입니다. 따라서 가능한 한 많은 작업을 해결하고 일부 작업은 완전히 건너 뜁니다. 당신의 사고 방식은 문제가되지 않는다는 것입니다 있는 , 단지 부분 집합임을 중요한 당신이 완료 작업의 부분 집합 가능한 한 크게 .
얼마나 많은 작업을 완료 할 수 있습니까?
도전
아래에 나열된 12 가지 작업 중 하나를 정확하게 해결하는 최대 12 개의 서로 다른 프로그램을 작성하십시오. 이 프로그램 길이의 누적 합계는 140 바이트를 초과 할 수 없습니다
또는 1에서 12 사이의 정수를 필요로하는 140 바이트 이하의 단일 프로그램을 작성하고 해당 작업을 해결하는 데 이상적이며 필요에 따라 더 많은 입력을 수행 할 수 있습니다. 모든 작업이 필요한 것은 아니지만 점수에 포함되는 작업 만 수행 할 수 있습니다. 작동하지 않는 작업은 오류가 발생하거나 다른 작업을 수행 할 수 있습니다.
두 경우 모두 "프로그램"은 실제로 입력을 인수 또는 프롬프트로 사용하여 출력을 인쇄하거나 리턴하는 함수일 수 있습니다. 예를 들어, 다음과 같은 140 바이트 함수를 f(taskNumber, taskInput)
작성하거나 각 태스크에 대해 별도의 코드 스 니펫을 작성하거나 일부는 기능 및 일부는 완전한 프로그램으로 작성할 수 있습니다.
그 외 세부 사항:
모든 코드는 동일한 언어로 작성해야합니다.
평소와 같이 입력은 stdin, 명령 행, 함수 인수 또는 사용자의 언어에 일반적으로 사용되는 것에서 가져와야합니다. 출력은 stdout 또는 가장 가까운 언어로 인쇄되거나 적절한 유형으로 반환됩니다.
합리적인 양의 입력 형식이 좋습니다. 예를 들어 문자열 주위 또는
\n
실제 줄 바꿈 대신 따옴표 .출력은 외부 서식이나 공백없이 정확히 요구되는 것이어야합니다. 선택적 단일 후행 줄 바꿈은 예외입니다.
REPL 환경 에서만 실행되는 코드 는 프로그램이나 기능을 구성하지 않습니다.
여러 작업을 해결하는 여러 프로그램을 작성할 수 없습니다. 모든 작업을 (이상적으로) 해결하는 하나의 프로그램이거나 각각 하나의 작업을 해결하는 (이상적으로) 12 개의 프로그램입니다.
작성하지 않았거나 약간만 수정 한 작업 솔루션을 게시하는 것은 원래 작성자에게 귀속되지 않고 이상적으로 권한을 얻는 것도 허용되지 않습니다. 귀하의 답변이 다른 모든 답변에서 가장 짧은 솔루션을 주로 작성하는 경우 커뮤니티 위키 여야합니다.
채점
가장 많은 작업을 완료 한 제출물이 승자입니다. 두 개의 제출이 묶이면 바이트 수가 가장 적은 것이 이깁니다. 바이트 수가 묶인 경우 이전 제출이 우선합니다. 커뮤니티 위키 답변은 이길 수 없습니다.
몇 가지가 아니라 해결 한 작업을 알려주십시오!
골퍼 이외의 핸디캡 :
이 도전은 골프 언어에 의해 지배 될 가능성이 높습니다 . 많은 언어가 140 바이트 내에서 하나 또는 두 개의 작업을 해결하는 데 문제가있을 수 있습니다. 따라서 제한이 3 개의 트윗 (예 : 420 바이트) 인 비경쟁 답변을 제출할 수 있습니다 . 다른 모든 규칙은 동일하게 유지됩니다.
작업
작업 1-세 개의 숫자가 삼각형을 형성 할 수 있습니까?
3 개의 양의 정수를 가져 와서 길이 가 3 개의 선 이 삼각형을 형성 할 수 있는지 여부를 나타내는 참 / 거짓 값을 출력합니다 . 숫자가 특정 순서대로되어 있다고 가정해서는 안됩니다.
참신한 예 (한 줄에 하나씩) :
20 82 63
1 1 1
2 3 4
1 2 2
잘못된 예 :
6 4 10
171 5 4
1 1 2
1 2 3
작업 2-백만에 가장 가까운
정확히 7 개의 10 진수 (0-9)의 문자열이 주어지면 가능한 한 백만에 가까운 숫자를 얻도록 재정렬하십시오. 즉, abs(1000000 - rearrangedNumber)
최소화해야합니다.
결과 숫자를 문자열이 아닌 정수로 인쇄하거나 반환하십시오 (따라서 언어의 표준이 아닌 한 0을 선행해서는 안됩니다).
등의 입력이 9034318
발생한다 984331
(그리고 1033489
).
2893984
이어야한다 2348899
.
0001000
이어야한다 1000000
.
0000020
이어야한다 200000
.
작업 3-간단한 키보드 시뮬레이터
소문자 (az), 공백 및 꺾쇠 괄호로 묶습니다 <>
. 왼쪽에서 오른쪽으로 읽으십시오.이 문자열은 처음에 빈 텍스트 편집기가 열린 상태에서 표준 키보드에서 누른 키를 나타냅니다. 문자와 공백은 일반 키에 <
해당 하지만 왼쪽 화살표 키와 >
오른쪽 화살표 키에 해당합니다.이 두 키 를 누르면 커서 가 움직 입니다.
<
커서를 한 문자 왼쪽으로 이동하거나 커서가 문자열의 시작 부분에 있으면 아무 것도 수행하지 않습니다.
>
커서를 한 문자 오른쪽으로 이동하거나 커서가 문자열의 끝에 있으면 아무 것도 수행하지 않습니다.
입력 문자열의 모든 키를 누르면 텍스트 편집기에있는 문자열을 출력합니다. 커서를 이동시키기 위해 이스케이프 코드 를 출력하는 것은 허용되지 않습니다.
입력에는 항상 화살표가 아닌 키 문자가 하나 이상 있어야합니다.
예를 들어 입력 값 ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
은이어야합니다 the quick brown fox
.
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
제공해야합니다 llammoptimizer
.
e< <c<b<a
제공해야합니다 abc e
.
<<<>><><<><toast>><<>><><<>><
제공해야합니다 toast
.
과제 4-FILTHE Letters
많은 글꼴에서 대문자 영어 알파벳 글자의 6 수평 및 수직 라인의 전체 구성 : E
, F
, H
, I
, L
,와 T
. 이것을 FILTHE 문자라고합니다.
대문자 (AZ) 문자열을 가져와 FILTHE 문자의 줄 수를 세어 결과 정수를 출력합니다.
E
, F
, H
, I
, L
, 및 T
는 각각 4, 3, 3, 3, 2, 2 라인을 갖는다.
예를 들어 GEOBITS
, FILTHE 문자의 4 + 3 + 2 = 9 줄이 .E..IT.
있으므로 출력은이어야합니다 9
.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
출력해야합니다 17
.
ABCDGJKMNOPQRSUVWXYZ
출력해야합니다 0
.
FILTHYLINESINLETTERS
출력해야합니다 39
.
작업 5 - 알렉스 재귀의 A.
우리의 중재자 알렉스 에이 (Alex A.) 는 상당히 신비한 이니셜 "A"를 가지고 있습니다.
지금은 확실하지 않지만의 A.
약자 라고 생각합니다 .A xelA
. 그리고 또한 .A
저기서 비웃음을 의미합니다 Alex A.
.
따라서 우리가 확장해야 알렉스의 전체 이름을 얻을 수있는 A.
의와 .A
의 :
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
프로그램에서 음이 아닌 정수를 가져 와서 Alex A.
여러 번 확장 하여 결과 문자열을 출력하십시오.
그래서
0
이된다 Alex A.
,
1
된다 Alex .A xelA
,
2
된다 Alex Alex A. xelA
,
3
된다 Alex Alex .A xelA xelA
,
4
된다 Alex Alex Alex A. xelA xelA
,
5
된다 Alex Alex Alex .A xelA xelA xelA
,
등등합니다.
(나는 실수로 Alex를 내 모드 공물 도전에서 벗어나는 것이 나쁘다고 느꼈기 때문에 이것을 만들었다 . : P)
작업 6-숫자 키패드 회전
1에서 9까지의 정수를 사용하십시오 (문자열로 사용할 수 있음). 3 × 3 제곱 자리를 출력
789
456
123
입력 숫자가 맨 위 행의 아무 곳에 나 나타나도록 90 ° 씩 회전합니다. 5
가 입력 되면 5
상단으로 회전 할 수 없으므로 모든 회전이 유효한 출력 입니다.
예를 들어 3
입력 될 때
963
852
741
과
321
654
987
유효한 출력입니다.
입력의 4
경우에만
147
258
369
유효한 출력입니다.
작업 7-숫자를 10으로 나누기
비어 있지 않은 10 진수 문자열 (0-9)을 가져 와서 각 섹션의 모든 숫자가 정확히 10 인 연속 섹션으로 나눌 수있는 경우 정확한 값을 출력합니다. 이것이 불가능한 경우 거짓 값을 출력하십시오.
이 예 19306128
와 같이 분할 될 수있다 19|3061|28
(10) (9 + 1, 3 + 0 + 1 + 6 + 8 2)와, truthy 값이어야 출력하도록 모든 합산 섹션.
참신한 예 (한 줄에 하나씩) :
19306128
073
730
0028115111043021333109010
2222255
잘못된 예 :
6810410
9218
12341
5222225
000
작업 8-정사각형 시계
일정한 크기의 여러 줄 문자열을 가져옵니다.
12
입력이 있으면 출력
_ _
| | |
|_ _|
3
입력이 있으면 출력
_ _
| |_|
|_ _|
6
입력이 있으면 출력
_ _
| | |
|_|_|
9
입력이 있으면 출력
_ _
|_| |
|_ _|
다른 입력 사례가 없습니다.
작업 9-브래킷 아트
왼쪽 대괄호의 각 중 하나를 포함하는 4 바이트 문자열을 가지고 (
, [
, {
, 및 <
임의의 순서로.
문자열이 8 바이트이고 세로 대칭 선이되도록 해당 오른쪽 대괄호를 추가하십시오. 예를 들면 [<({
됩니다 [<({})>]
.
그런 다음이 문자열의 모든 대괄호를 뒤집으십시오. 예를 들면 [<({})>]
됩니다 ]>)}{(<[
.
위와 아래의 반대 버전이있는 원래 8 바이트 브래킷 문자열을 별도의 행에 출력하십시오.
입력에 대한 최종 출력은 그래서 [<({
것
]>)}{(<[
[<({})>]
]>)}{(<[
마찬가지로, 상기 출력에 대한이 <({[
있어야
>)}][{(<
<({[]})>
>)}][{(<
이 ( (<<[
가) {
없고 추가 항목이 있으므로 입력 이 유효하지 않습니다 <
.
작업 10-Perimiterize
.
빈 공간을 나타내는 텍스트 와 X
단단한 타일을 나타내는 텍스트로 구성된 직사각형의 텍스트 격자 (가장 작은 1x1)를 사용하십시오 . 그리드 경계를 벗어난 셀은 비어있는 것으로 간주됩니다. 네 개의 모눈 모서리 행과 열 각각에 하나 이상이 포함되어 있다고 가정 할 수 있습니다 X
.
예를 들어 유효한 입력은 다음과 같습니다.
XXX.....X.....
X..X...X.X....
XXX.....X....X
각 출력 빈 셀이 이웃 것을 다른 텍스트 직사각형 그리드 X
직교 또는 대각선 입력 그리드 그 외측을 포함한는 ,이된다 o
. 따라서 본질적으로의 o
타일은 단단한 타일의 모든 부분 주위에 그려집니다. 새 그리드는 기존보다 커야합니다.
따라서 위 예제의 결과는 다음과 같습니다.
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
마찬가지로, 입력 출력 XXX..X.X
되어야
oooooooooo
oXXXooXoXo
oooooooooo
그리고 출력
oooooooooo.
oXXXooXoXo.
oooooooooo.
맨 오른쪽 빈 열이 필요하지 않으므로 유효하지 않습니다.
당신은 어떤 3 개 별개 사용할 수 있습니다 인쇄 가능한 ASCII 대신에 문자를 .
, X
하고 o
.
작업 11-Sator Square
Sator Square 출력 :
SATOR
AREPO
TENET
OPERA
ROTAS
글자는 소문자 또는 대문자 일 수 있으므로
SatOR
aRePO
tenet
OPERa
RoTaS
유효한 출력이기도합니다.
입력이 없습니다.
작업 12-주요 트윗
입력하지 말고 인쇄 가능한 95 개의 ASCII 문자 각각 중 하나 이상을 포함 하는 140 바이트 인쇄 가능한 ASCII 문자열을 출력하십시오 . (45 자 중복됩니다.)
이 문자열의 모든 140 바이트의 문자 코드의 합계가해야 소피 제르맹 소수 , 즉 소수 p
그러한 2p+1
또한 소수. 공백의 문자 코드는 32, 33은 !
34, 34는 "
최대 126입니다 ~
. 합은 Python에서로 계산할 수 있습니다 sum(map(ord, myString))
.
출력 예는 다음과 같습니다.
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
import
s 에서 바이트를 어떻게 계산해야 합니까? 2가 동일한 모듈 (예 import Math
:)이 필요한 5 개의 함수를 작성한다고 가정 해 봅시다. 이는 두 번 계산됩니까?