Cramming The Gramming-12 가지 과제 트윗


42

상사가 가능한 빨리 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

문자 코드 합계는 해당 안전 소수 가 24407 인 소수 12203입니다.


7
CJam / Pyth
Fatalize

9
나는 당신의 도전에 참여하게 된 것을 영광으로 생각합니다. : P
Alex A.

결과가 출력으로 인쇄 된 후 작업이 오류와 함께 종료 될 수 있습니까?
torcado

1
imports 에서 바이트를 어떻게 계산해야 합니까? 2가 동일한 모듈 (예 import Math:)이 필요한 5 개의 함수를 작성한다고 가정 해 봅시다. 이는 두 번 계산됩니까?
nimi

3
나는이 질문을 주제를 벗어난 주제로 마무리하기 위해 투표하고있다. 그 이유 는 부품들 간의 상호 작용이 불충분
pppery

답변:


10

Pyth, 136 바이트의 9 개 작업

작업 1 : 7 바이트

<-F_SQ0

데모

내림차순으로 정렬 ( _SQ)하고 뺄셈을 접고 ( a-b-c) 결과가 음수인지 확인하십시오.

작업 2 : 14 바이트

sho.a-sN^T6.pz

데모

모든 문자열 순열 ( .pz)을 형성하고 숫자 ( )와 백만 ( ) 사이의 o차이 ( .a-) 의 절대 값을 기준으로 정렬합니다 sN( ^T6).

첫 번째 문자열 ( h)을 가져 와서 숫자로 변환하십시오. ( s).

작업 4:19 바이트

s/L+\EPP*3"EFHILT"z

데모

복제 "EFHILT"세 번 ( *3), 후행를 제거 LT( PP) 및 추가 E( +\E). 입력의 각 문자를 해당 문자열의 모양 수에 매핑하십시오. ( /L ... z). 합집합. ( s).

작업 5 : 16 바이트

u+"Alex "_GhQ".A

데모

로 시작하여 "A."반전 "Alex "하여 시작에 +를 1 번 더합니다.

작업 7 : 13 바이트

}Y-RTsMM./sMz

입력 문자열을 1 자리 숫자 ( sMz) 목록으로 변환하십시오 . 모든 파티션을 구성하십시오 ( ./). 각 파티션의 각 요소를 합칩니다 ( sMM). 각 하위 목록 ( -RT) 에서 10을 모두 제거하십시오 . 빈 목록이 전체 목록 ( }Y) 에 있는지 확인하여 하위 목록을 비웠는지 확인하십시오 .

작업 8 : 11 바이트

*3h%%CQC\Ç4

데모

모듈로 마술. 숫자 ( CQ)로 변환 하고 mod 199 ( C\Ç= 199)로 가져 와서 mod 4를 가져옵니다 . 그런 다음 1을 더하고 3을 곱합니다.

작업 9 : 21 바이트

J+Xz"<{[()]}>")_zJ_JJ

데모

먼저 첫 번째 행을 생성합니다.이 행은 미러 문자 ( Xz"<{[()]}>"))로 변환 된 입력과 역 입력 ( + ... _z)으로 구성되어 저장됩니다 J. 그런 다음 해당 줄과 그 반대 줄을 다시 인쇄하십시오 ( J_JJ).

작업 11:22 바이트

+J"SATOR
AREPO
TEN"t_J

데모

문자열과 반전을 인쇄하지만 가운데를 복제하지 마십시오 N.

작업 12 : 13 바이트

++G*19\3srd\

데모

코드 끝에 보이지 않는 DEL( 7F) 문자가 있습니다.

이것은 인쇄

abcdefghijklmnopqrstuvwxyz3333333333333333333 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

문자 합이 11321있습니다. 그것은 구성 G알파벳, 19, 3S 및 인쇄 가능한 ASCII 문자의 모든.


28

CJam, 140 바이트에서 8 개의 9 개 작업

먼저 솔루션을 정렬하고 트윗에 적합한 솔루션을 알려주는 데 사용할 수있는 스크립트는 다음과 같습니다.

{\s\Se[oSo}:F;
qN/ee{W=,}${)_,_T+:T140>X*_{0:X;}*'=@11+*N+*o\~)YF_,ZFTZFoNo}/

12 개의 솔루션을 각 라인에 하나씩 입력에 붙여 넣기 만하면됩니다. 여기서 실행하십시오. 첫 번째 열은 작업 번호이고 두 번째 열은 문자 크기 -바이트 수와 다른 경우 직접 수정해야하며 세 번째 열은 누적 크기입니다. 짹짹에 맞는 프로그램은 라인으로 나머지에서 분리됩니다 ===.

나를 위해 출력은 다음과 같습니다.

 1   7   7 q~$~\->
 8  10  17 qDbJ%5/)3*
12  12  29 ',32>_51>'d
 7  13  42 Aq{~-Ace|}/N&
 2  15  57 qe!{~1e6-z}$0=~
 4  19  76 q"FIHEELT"3*H<fe=:+
 5  20  96 ".A"q~){" xelA"+W%}*
 9  22 118 q_{_')>+)}%W%+_W%N@N3$
11  22 140 "SATOR\AREPO\TEN"_W%1>
====================================
 6  25 165 9,:)s3/zq~))3mdg*{W%z}*N*
 3  43 208 LLq{_'=-z({+}{'=>_)$\[{)@+\}{\(@\+}]=&}?}/\
10  45 253 0XW]_m*qN/{'.f+W%z}4*f{\~@m>fm>N*}(\{8f^.e>}/

그래서 현재 트윗에 들어갈 수있는 작업이 있습니다.

작업 1-세 개의 숫자가 삼각형을 형성 할 수 있습니까? - 8 7 바이트

1 바이트를 저장해 준 jimmy23013에게 감사합니다.

q~$~\->

테스트 스위트.

입력은 CJam 스타일 목록이 될 것으로 예상됩니다.

이것은 매우 간단합니다. 가장 큰 쪽이 다른 쪽의 합보다 짧은 지 확인하십시오. 또는 가장 짧은 쪽이 다른 쪽의 차이보다 긴지 확인하십시오.

q~  e# Read and eval input.
$~  e# Sort the values and dump them on the stack.
\-  e# Subtract the middle value from largest.
>   e# Check if the smallest value is greater than that.

작업 2-백만에 가장 가까운-15 바이트

qe!{~1e6-z}$0=~

테스트 스위트.

단순한 무차별 대입 :

q        e# Read input.
e!       e# Get all permutations.
{        e# Sort by...
  ~      e#   Evaluate the permutation to get its numerical value X.
  1e6-z  e#   abs(X - 1,000,000)
}$
0=       e# Pick the first element (which minimises the difference)
~        e# Evaluate it to get rid of the leading zeroes.

태스크 4-FILTHE Letters- 21 19 bytes

2 바이트를 절약 한 jimmy23013에게 감사합니다.

q"FIHEELT"3*H<fe=:+

테스트 스위트.

아이디어는 각 FILTHE 문자를 각 직교 선마다 한 번씩 포함하는 문자열을 만드는 것입니다. 이것은 재미있는 문자열 조작을 통해 수행됩니다.

q          e# Read the input.
"FIHEELT"  e# Push this string. It first contains the 3-line letters, then the 2-line 
           e# letters, where we include 'E' twice to make it count for 4.
3*         e# Repeat 3 times: "FIHEELTFIHEELTFIHEELT"
H<         e# Truncate to 17 characters: "FIHEELTFIHEELTFIH". This is chosen such that
           e# it discards the third repetition of the 2-line letters.
fe=        e# For each character in the input, count its occurrences in this new string.
:+         e# Sum them all up.

작업 5-Alex 재귀 A.- 27 20 바이트

".A"q~){" xelA"+W%}*

테스트 스위트.

직접 A.적이고 실질적인 섭리를 구현하는 .A것은 너무 비싸다. 대신 매번 문자열을 바꾸면 하나의 케이스 만 처리하면됩니다. 또한 Alex매번 앞뒤 에 공백을 두는 것은 초기를 확장하는 것과 같습니다. 문자열을 뒤집기 전에 역을 추가하여 다른 바이트를 저장할 수 있습니다.

".A"        e# Start with ".A" (the -1st iteration if you like).
q~)         e# Read input, eval, increment (so the following block is run at least once.)
{           e# Repeat this block that many times...
  " xelA"+  e#   Append " xelA".
  W%        e#   Reverse the string.
}*

작업 7-숫자를 10으로 나누기 -18 16 13 바이트

Aq{~-Ace|}/N&

테스트 스위트. (각 출력에 괄호가 있습니다.)

정확하게 사용자에게 친숙하지는 않습니다. 진실한 값은 하나의 줄 바꿈이고, 잘못된 값은 빈 문자열입니다.

기본 아이디어는 간단합니다. 숫자가 정확히 10에 도달 할 때마다 재설정되는 누적 합계에 숫자를 추가합니다. 입력의 끝에서 합계는 0이어야합니다. 시작하려면 총계가 10에서 짧아지고 숫자를 빼고 0을 칠 때마다 총계를 재설정합니다. 그러나 입력이 모두 0 일 때 진실한 것을 반환하지 않아야합니다. 내가 찾은 가장 짧은 방법 은 코드 포인트 10 (줄 바꿈) 이있는 문자 로 총계를 재설정 한 다음 실제로 10 번이 아닌 스택에 해당 문자가 있는지 확인합니다. 정수 0과 문자 0 (널 바이트)이 모두 거짓이기 때문에 :

A     e# Push a 10, the initial running total.
q{    e# For each character in the input...
  ~-  e#   Evaluate the character to get the digit and subtract it from the total.
  Ac  e#   Push a linefeed character.
  e|  e#   Logical OR of the running total and the linefeed character (using
      e#   short-circuiting).
}/
N&    e# Take the set intersection with the string containing a linefeed character.
      e# If the total is still a number of any character other than the linefeed,
      e# this will yield an empty string. Otherwise, the string will remain unchanged
      e# and the linefeed will be printed.

작업 8-정사각형 시계-10 바이트

qDbJ%5/)3*

테스트 스위트.

이것은 올바른 값으로 해시되는 캐릭터 코드에 대한 아주 임의의 모듈로 마술입니다. 나는 더 짧은 것이 가능하다는 것을 확신하지만, 이런 종류의 구조에서 내가 찾은 가장 짧은 것은 프로그래밍 방식입니다.

q   e# Read the input.
Db  e# Treat the character codes of the string as digits in base 13. This maps the
    e# four inputs to the values: 2023940117708546863
    e#                            2023940113755405840
    e#                            2023940781838850791
    e#                            2023940113755390292
J%  e# Take the result modulo 19. This gives [2, 5, 12, 18], respectively.
5/  e# Divide by 5 (rounding down). [0, 1, 2, 3], respectively.
)   e# Increment. [1, 2, 3, 4], respectively.
3*  e# Multiply by 3. [3, 6, 9, 12], respectively.

작업 9-브래킷 아트 -23 22 바이트

1 바이트를 절약 한 Sp3000에 감사합니다.

q_{_')>+)}%W%+_W%N@N3$

테스트 스위트.

매우 간단합니다. 왼쪽 대괄호 사이의 매핑은 2 (또는 괄호의 경우 1)를 추가하여 수행됩니다.

q_      e# Read input and duplicate.
{       e# Map this block onto each character...
  _')>  e#   Duplicate and check if it's not a parenthesis.
  +     e#   Add the result, leaving parentheses unchanged and incrementing the
        e#   other bracket types.
  )     e#   Increment again.
}%
W%+     e# Reverse and add to the original, giving the middle line.
_W%     e# Duplicate and reverse, giving the first line.
N@      e# Push a linefeed, pull up the middle line.
N3$     e# Push another linefeed, copy the first line.

작업 11-Sator Square-22 바이트

"SATOR
AREPO
TEN"_W%1>

여기에서 테스트하십시오.

아마도 가장 지루한 해결책 일 것입니다. 문자열의 전반부를 밀어 넣은 다음 뒤집습니다.

"SATOR
AREPO
TEN"    e# Push everything up to the centre of the square.
_W%     e# Duplicate and reverse.
1>      e# Discard the "N", because we don't want that twice.

작업 12-주요 트윗 -13 12 바이트

',32>_51>'d

여기에서 테스트하십시오. (결과에 대한 진단 출력 포함)

'인쇄 할 수없는있다 <DEL>SE 밖으로 스트립하는 (0x7F의가). 복사 붙여 넣기의 경우이 버전을 대신 사용하십시오.

'~),32>_51>'d

인쇄 된 문자열은

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

즉, 모든 문자의 한 실행에 이어 다른 실행에서 S~까지 ~, 단일 실행이 포함 됩니다 d. 문자 코드의 합은 12203입니다. 나는 약간의 시행 착오를 통해 이것을 발견했습니다.

'~),32>  e# Push a string with all printable characters.
_51>     e# Duplicate this and discard the first 51 of them.
'd       e# Push a "d".

1
q~$~\-> q"FIHEELT"3*H<fe=:+.
jimmy23013

@ jimmy23013 오오오 오오오 오오오 오오오 e=.
Martin Ender

20 자로 5 번을하는 방법을 발견하기 전에 뭔가를 게시하기에 충분한 답변을 얻고 싶었습니다.
피터 테일러

19

Pyth, 138 바이트에서 9 개의 작업

꽤 오랜 시간이 걸렸습니다.

Pyth에는 9 가지 작업이 한계라고 생각합니다. 다음으로 가장 짧은 프로그램 (Sator Square)을 포함하면 160 바이트가됩니다. 20 바이트 골프는 거의 불가능합니다. 약간 추악하고 짧아 질 수있는 2 ~ 3 개의 작업이 있지만 전반적으로 솔루션에 매우 만족합니다.

작업 1-세 개의 숫자가 삼각형을 형성 할 수 있습니까?, 8 바이트

>FsMc2SQ

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 2-가장 가까운 백만, 14 바이트

ho.a-^T6NsM.pz

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 4-FILTHE Letters, 20 bytes

s*Vtsmmdd5/Lz"TLIHFE

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 5-Alex Recursive A., 16 바이트

u+"Alex "_GhQ".A

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 6-숫자 키패드 회전, 20 바이트

jeo}zhN.uC_N3_c3jkS9

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 7-숫자를 10 바이트, 15 바이트로 나누기

qTu+WnGTvHG-zZZ

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 8-정사각형 시계, 12 바이트

*3%%Cz1978 5

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 9-브래킷 아트, 20 바이트

V3_WtN+z_Xz"[<({})>]

온라인으로 사용해보십시오 : 일반 입력 또는 테스트 스위트

작업 12-주요 트윗, 13 바이트

++*d44srd\\&

온라인으로 사용해보십시오 : 일반 입력


2
제출물을 결합하면 133 바이트가됩니다.
isaacg

9

TI-BASIC, 11 12 개의 728 830 바이트 작업

7 바이트의 작업 1

:2max(Ans)`<`sum(Ans

입력은의 목록입니다 Ans.

에서 작업이 92 110 바이트

:seq(expr(sub(Ans,I,1)),I,1,7→L₁
:SortA(L₁
:min(7,1+sum(not(L₁
:{L₁(1)+sum(seq(L₁(I))₁₀^(I-8),I,2,7)),L₁(Ans)+sum(seq((I`>`Ans)L₁(I)₁₀^(1-I),I,2,7
:ᴇ6Ans(1+(0`>`min(ΔList(abs(1-Ans

숫자 목록을 입력 하라는 메시지가 나타납니다Ans . 입력 문자열은 입니다.

119 바이트의 작업 3

:Input Str1
:"  →Str2
:For(I,1,length(Str1
:sub(Str1,I,1→Str3
:inString("`<>`",Ans
:If Ans:Then
:max(0,min(L,C+2Ans-3→C
:Else
:C+1→C
:L+1→L
:sub(Str2,1,C)+Str3+sub(Str2,C+1,L-C+1→Str2
:End
:End
:sub(Str2,2,L

문자열을 묻습니다. C와 L이 정의되지 않았거나 0이라고 가정합니다.

35 바이트의 작업 4

:sum(int(2seq(inString("TLIHFE",sub(Ans,I,1))^.4,I,1,length(Ans

입력은의 문자열입니다 Ans.

63 바이트의 작업 5

:Ans/2→C
:sub("A.A",1+2fPart(C),2
:For(I,0,C
 :"Alex "+Ans
 :If I≠C
  :Ans+" xelA
:End
:Ans

입력은의 숫자입니다 Ans.

66 바이트의 작업 6

: 𝑖 ^ ((Ans <7) (Ans-3 (Ans >3 : For (Y, ⁻1,1) : Disp sum (seq ((5-real (AnsX + Ans𝑖Y))-3imag (AnsX + Ans𝑖Y)) ₁₀ ^ ( X + 1), X, ⁻1,1 : 끝

입력은의 숫자입니다 Ans.

36 43 바이트의 작업 7

:Input <strike>L₁</strike>Str1
:.5
:For(I,1,<strike>dim(L₁</strike>length(Str1
 :Ans+<strike>L₁(I</strike>expr(sub(Str1,I,1
 :If 10=int(Ans
  :0
:End
:not(Ans

숫자 목록 문자열을 프롬프트 합니다.

29 바이트의 작업 8

:18fPart(sum(seq(I(sub(Ans,I,1)=" ")/6,I,1,15

입력은의 문자열입니다 Ans.

83 바이트의 작업 9

:For(I,1,16,2
 :If I<8
  :Ans+sub("`)}]>`",inString("`({[<`",sub(Ans,4,1)),1
 :sub(Ans,I,1)+Ans
:End
:For(I,⁻1,1
 :Disp sub(Ans,9-8abs(I),8
:End

입력은의 문자열입니다 Ans.

159 바이트의 작업 10

:1→X
:Input Str1
:2+length(Str1→L
:"X
:While 2+L`>`length(Ans
 :Ans+Ans→Str2
:End
:Ans→Str3
:While 1
 :"XX
 :Ans+Str1+Ans→Str1
 :For(I,1,L
  :Ans+sub("0X.",2expr(sub(Str2,I+1,1))+not(expr(sub(Ans,I,3)+sub(Str2,I,3)+sub(Str3,I,3))),1
 :End
 :Disp sub(Ans,L+3,L
 :Str2→Str3
 :Str1→Str2
 :Input Str1
:End

각각 X0.대신 사용 합니다 .Xo(죄송합니다). 한 줄씩 입력하라는 메시지를 표시합니다. X모든 출력을 보려면 s의 두 줄을 입력 한 다음 종료하려면 2nd + Quit을 입력해야합니다.

39 바이트의 작업 11

:Disp "SATOR
:Disp "AREPO
:Disp "TENET
:Disp "OPERA
:Disp "ROTAS

77 바이트의 작업 12

: Ans + "tvm_I % LinReg (ax + b) DS <(getKeyconj (1-PropZTest (dayOfWk (Manual-Fit C / YANOVA) (* row (HorizRegEQUnarchive [J]! # $!) &",. 234567890 :; = >? @GBQX \^) _`qw {|} ~

또는 16 진수로 :

72702ABB21FFDBADBB25BB3EEF06EF16
6331BB5917746201BB695C092DBBD2BB
D3BBD4AEAE2B3A323334353637383930
3EBBD66A6CAFBBD147425158BBD7F0BB
D9BBD5BBC1BBC708BBD809BBCF

입력은에 포함 "된 문자열 입니다 Ans.

TI-BASIC에서는 실제로 불가능합니다. 기본 프로그램을 16 진수로 편집하고 특정 2 바이트 토큰을 사용하여 인쇄 가능한 모든 ASCII 문자를 소스 코드로 가져올 수 있지만 문제는 아닙니다. 문제는 "프로그램 입력이없는 깨끗한 calc에서 순수한 기본으로 문자열에 문자 를 저장할 수있는 방법이 없다는 것입니다 ( 문자에 동일하게 적용 되지만 인쇄 가능한 ASCII는 아닙니다). 그러나 "기본 외부에 방정식 을 넣을 수 있습니다. 그런 다음 기본을 사용하여 방정식을 문자열로 변환하고 해당 문자열을 표시 할 수 있습니다. 무엇보다도, 한 번에 128 자씩 화면에 충분한 공간이 있습니다.


7

Perl, 117 바이트의 4 가지 작업

실제 언어를 시도해보십시오 ;)

아직 포기하지 않았지만, 5 바이트의 작업을 140 바이트로 압축 할 수도 있습니다.

* 작업 1 : 30 + 1 = 31 바이트

@F=sort@F;say$F[0]+$F[1]>$F[2]

용법: perl -aM5.010 entry.pl input.txt

* 작업 4 : 32 + 1 = 33 바이트

y/ELTFHI/4223/;s/./+$&/g;$_=eval

용법: perl -p entry.pl input.txt

작업 5 : 54 바이트

say"Alex "x($_/2+1).qw(A. .A)[$_%2]." xelA"x(--$_/2+1)

Dom Hastings 덕분에 -2b

용법: echo 4 | perl -M5.010 entry.pl

작업 7 : 37 + 2 = 39 바이트

($i+=$_)>10&&exit,$i%=10for@F;$_=!$i;

용법: perl -pF entry.pl input.txt

* 작업 8 : 21 + 2 = 23 바이트

$_=y/|_ 
/14/dr/64%14

이것은 약간 까다로운 것입니다. 각 교체함으로써 시작 |x각을 _가진 y각 격자에 대한 고유 두 자리 문자열을 생성 한 후 교환 구역 ( yyxxyxxyyx, yyxxyxxyyxyyxxxxyxyx, yyxxxxyxyxyyxyxxxyyx, yyxyxxxyyxyyxxxxyyx, yyxxxxyyx). 다음으로, 나는 bruteforce의 값에 프로그램을 작성 x하고 y대체 후 생산하고 숫자에서 수행 할 수있는 수학 연산 xy각 번호에 대한 3,6,9,12의 출력을 제공 할 수 있습니다. 결국 x=1, y=4매직 작업이었다 /64%14.

용법: perl -0p entry.pl input.txt

작업 11:34 바이트

say"SATOR
AREPO
TENET
OPERA
ROTAS"

용법: perl -M5.010 entry.pl

* 작업 12 : 30 바이트

say d.pack"C*",32..126,83..126

용법: perl -M5.010 entry.pl

면책 조항 : -M5.010 '무료'로 간주됩니다


루비는 펄보다 덜 실제적인가? ;)
Martin Ender

9
나는 당신이 (소음처럼 보이는) 대답을 볼 때, 나는 Perl을 실제 언어 로 인정하지 않을 것입니다 ;)
Fatalize

1
잘 했어! 나는 당신이 작업 5 qw(A. .A)[$_%2]대신에 2 바이트를 절약 할 수 있다고 생각 ("A.",".A")[$_%2]하고, 당신은 또 다른 몇 바이트를 얻을 수 있다고 확신합니다 ...
Dom Hastings

6

Ruby, 280 바이트의 4 개 작업 (비경쟁)

이것은 단지 시도 일뿐입니다. 나중에 계속 작업을 수행 할 것입니다 (기존의 작업을 골프화하기를 바랍니다).

작업 1

a=gets.split.map &:to_i;p a.all?{|e|e<a.inject(:+)-e}

작업 2

p gets.chars.permutation.map{|a|a.join.to_i}.min_by{|x|(x-1e6).abs}

작업 4

n,b='EFHILT',0;gets.chars.map{|c|b+=n[c]==p ? 0:[4,3,3,3,2,2][n.index c]};p b

작업 5

a='Alex A.';gets.to_i.times{|i|i%2<1 ? a.sub!('A.','.A xelA'):a.sub!('.A',a)};$><<a

6

TI-BASIC, 994 바이트의 12 개 작업

TI 그룹 파일 ( .8xg ) 로 모두 다운로드

요청마다 스포일러 태그가 추가되었습니다.

작업 1-세 개의 숫자가 삼각형을 형성 할 수 있습니까? -7 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:2max(Ans)<sum(Ans

작업 2-백만에 가장 가까운-114 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:int(10fPart(Ans\10^(\-cumSum(binomcdf(6,0→X
:"sum(\L\X\10^(\cumSum(not(binompdf(6,0→\Y1\
:SortD(\L\X
:\Y1\→X
:sum(not(\L\X
:If Ans
:Then
:If max(\L\X=1
:X+\E\6-\10^(\6-Ans→X
:SortA(\L\X
:augment(ΔList(cumSum(\L\X)),{0→X
:End
:{X,\Y1\
:Ans(1+(0>min(ΔList(abs(\E\6-Ans

작업 3 - 간단한 키보드 시뮬레이터 - 131 127 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Input Str1
:DelVar X1→Y
:"..→Str2
:For(Z,1,length(Str1
:sub(Str1,Z,1→Str3
:(Ans=">")-(Ans="<
:If Ans
:Then
:max(1,min(Y+Ans,X+1→Y
:Else
:sub(Str2,1,Y)+Str3+sub(Str2,Y+1,X-Y+2→Str2
:X+1→X
:Y+1→Y
:End
:End
:sub(Str2,2,X

태스크 4-FILTHE Letters-34 bytes

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:sum(int(\³√(\12seq(inString("TLIHFE",sub(Ans,X,1)),X,1,length(Ans

작업 5-Alex 재귀 A.-107 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Input X
:".A..
:For(X,0,X
:Ans→Str1
:5int(.5X+.5
:sub(Str1,1,Ans+1)+sub(".A xelAlex A.",6gcd(X,2)-5,7)+sub(Str1,Ans+4,5X-Ans+1
:End
:sub(Ans,2,5X+2

작업 6-숫자 키패드 회전-86 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:.3Ans+2(Ans=6→X
:[[9,6,3][8,5,2][7,4,1
:For(X,0,X
:rowSwap(Ans\^T\),1,3
:End
:Ans
:*row+(10,*row+(10,Ans\^T\,1,2),2,3
:For(X,1,3
:Disp Ans(3,X
:End

작업 7-자릿수를 10으로 나누기-77 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Ans+"0
:seq(expr(sub(Ans,X,1)),X,1,length(Ans
:augment(Ans,{10not(not(max(Ans→X
:1→X
:Repeat Ans≥dim(\L\X
:Ans+1
:If 10=sum(\L\X,X,Ans
:Ans+1→X
:End
:X=Ans

작업 8-정사각형 시계-35 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:12-3max(seq(X(sub(Ans,6gcd(X,2)+X,1)≠" "),X,1,3

작업 9-브래킷 아트-86 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Input Str1
:For(X,1,4
:For(Y,0,1
:abs(X-9not(Y→Z
:"()[]{}<>
:sub(Ans,inString(Ans,sub(Str1,X,1))+Y,1
:Output(1,Z,Ans
:Output(2,9-Z,Ans
:Output(3,Z,Ans
:End
:End

작업 10-Perimterize-218 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:".
:For(A,0,\E\9
:Input Str1
:Ans+Str1→Str2
:If Str1≠".
:End
:length(Ans→X
:round(A\^-1\(Ans-2→B
:seq(expr(sub(Str2,A,1)),A,2,X-1→B
:πAns→C
:"augment(Ans,augment(Ans,\L\B))+augment(Ans,augment(\L\C,Ans))+augment(\L\B,augment(Ans,Ans→X
:seq(0,A,1,B
:\L\X→A
:For(C,0,A+1
:seq(\L\A(A+BC),A,1,B→C
:int(Ans→B
:{0
:1+not(\L\X)+not(fPart(\L\X→B
:".
:For(X,1,B+2
:Ans+sub("120",\L\B(X),1
:End
:Disp sub(Ans,2,B+2
:End

이러한 대체가 이루어졌습니다 : 0= ., 1= X, 2=o

입력을 위해 (프로그램이 시작된 후) 마지막 행이 기록 될 때까지 각 줄 바꿈에서 Enter 키를 눌러 한 번에 한 행씩 입력하십시오. 그런 다음 Enter 키를 누르고 한 마침표를 입력 한 다음 Enter 키를 다시 눌러 전체 문자열을 제출하십시오.

작업 11-Sator Square-38 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Disp "SATOR","AREPO","TENET","OPERA
:"ROTAS

작업 12-주요 트윗-151 바이트

TI-83 + 프로그램 파일 ( .8xp )로 다운로드

:Ans+"!#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
:For(X,1,45
:Ans+" 
:End
:Ans

Ans\Y1\방정식 편집기에서 직접 입력 Equ►String(\Y1\,Str1:Str1하고 홈 화면에서 실행 하여 큰 따옴표를 포함해야합니다 .

출력 길이는 140입니다. 8은 두 번 나타나고 다른 ASCII 문자와 함께 한 번 나타나는 45 개의 공백이 있습니다. 이것은 소피 제르맹의 프라임 인 (33 + 34 + ... + 126) + 56 + 32 × 45 = 8969입니다.


내가 OP를 물었다, 당신은 같은 토큰을 믿을 수 sin(로 표시 s, i, n, 및 (작업 12
lirtosiast

0

Python 3, 1 작업, 268 바이트, 비경쟁

Python 3.5.2에서 Task # 2를 시도했습니다. 골프 및 Python을 처음 사용합니다.

import itertools
def f2(l):
    n=1000000
    l=list(itertools.permutations(l))
    j = len(l)
    m=[None]*j
    while j>0:
        j -= 1
        m[j]= int(''.join(str(i) for i in l[j]))
        l[j]=abs(n-m[j])
    l.sort()
    k=n-l[0]
    return(n+l[0],k)[k in m]

PPCG에 오신 것을 환영합니다. 파이썬 3에서는 예를 들어 쓸 수있는 문장과 같은 문장을 한 줄에 넣을 수 x=10;print(x)있습니다.
조지
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.