당신의 임무는 키보드의 양쪽을 서로 맞대고 같은 언어로 출력하는 표준 키보드의 왼쪽에있는 키만을 Pollinium milk; plump pumpkin; lollipop?
사용하고 다른 하나는 출력하는 오른쪽에있는 키를 사용하여 두 개의 프로그램 을 작성하는 것입니다. Weatherheaded sweetheart haberdasheress!
.
규칙
왼쪽 프로그램에 허용되는 정확한 키는 다음과 같습니다.
123456!@#$%^QWERTYqwertyasdfghASDFGH`zxcvb~ZXCVB
그리고 오른쪽 프로그램 :
7890-=&*()_+uiop[]UIOP{}jkl;'\JKL:"|nm,./NM<>?
솔루션 중 하나 또는 둘 다 또는 둘 다에 사용할 수있는 네 개의 비어있는 키 Esc
( \x1b
), Tab
( \x09
), Space
( \x20
) 및 Enter
( \x0a
및 / 또는 \x0d
)가 있습니다.
점수는 두 프로그램의 총 바이트 수입니다. 이라는 용어를 사용하는 동안 program
제출물은 전체 프로그램이거나 평소와 같이 기능 일 수 있으며 두 유형 모두 다른 유형 (예 : 하나의 전체 프로그램 및 하나의 기능) 일 수 있습니다.
결과는 원하는 텍스트를 포함해야합니다. 정확한 텍스트가 텍스트 안에 나타나는 한, 앞뒤 공백은 아무 문제가 없습니다.
표준 허점은 금지되어 있습니다.
각 언어에서 가장 짧은 솔루션이 이깁니다.
답변
Perl 5 , 261 = 88 + 173 바이트
이것은 “언어 옵션이 중요하지 않은”문제가되는 예입니다. rigt side 솔루션은을 사용 -p
하지만 왼쪽 은 사용 하지 않습니다. 그래서 같은 언어로 계산됩니까? 옵션은 왼쪽 / 오른쪽 문자 집합에서 가져와야합니까?
왼쪽 88
이 옵션이 코드로 계산되어야하고 왼쪽에서 가져 오거나 “언어 버전 설정에 포함되지 않는 옵션”에 해당하는 경우 다시 논쟁 가능 을 활성화하기 위해 -M5.10.0
또는 -E
명령 줄에서 사용say
say eYYYYZYEYWYYYYYWQYEYQWQEYQYYZYWYYYYYQYQW^q%565504004w4052bw!504!w!04!204bw56550!6!h%
오른쪽 173
-p
옵션으로 실행하십시오 (올바른 문자로 구성됨)
}{*_=\(uuuuuuuuuuuuuiuuuuuuuuuuiuuuuuuuuuuuuuui&Uiipjipjiijij0puiipjiipp0jijipjipjipipp7|Ouiujujjuiuuu0kouuujuiju0jijujuikjujukk7&"7oulio7iouloli77ooliou7liiu7o7lu7io7o77i")
이것은 거의 확실하게 개선 될 수 있지만, 현재로서는 무언가를 작동시키기에 충분하지 않았습니다. 에 대한 액세스 권한을 가지고 있지 print
, say
, $_
와 sub{}
까다로운 출력한다
답변
공백 , 1175 1143 655 645 638 632 639 578 (293 + 285) 바이트
; p;
스택을 거꾸로 채우고 어떤 종류의 루프로 끝까지 인쇄하여 확실히 골프를 칠 수는 있지만 이것은 두 번째 공백 프로그램 일 뿐이므로 아직 알아 내지 못했습니다. .. 편집 : 골프.
7 바이트 내가 맞춤법이 틀린 때문에 pumpkin
같은 pumkin
.. (감사 알아 줘서, @ fənɛtɪk .)
문자 S
(공백), T
(탭) 및 N
(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]
설명으로 만 추가되었습니다.
왼쪽 Pollinium milk; plump pumpkin; lollipop?
:
[S S T T S T T T T N
_Push_-47_?][S S S T S N
_Push_2_p][S S S T N
_Push_1_o][S T S S T N
_Copy_1st_p][S S T T S T N
_Push_-5_i][S S T T S N
_Push_-2_l][S N
S _Duplicate_-2_l][S S S T N
_Push_1_o][S T S S T N
_Copy_1st_l][S S T T S S T T T S N
_Push_-78_space][S S T T T S S T T N
_Push_-51_;][S S S N
_Push_0_n][S S T T S T N
_Push_-5_i][S S T T T N
_Push_-3_k][S S S T S N
_Push_2_p][S S T T N
_Push_-1_m][S S S T T T N
_Push_7_u][S S S T S N
_Push_2_p][S S T T S S T T T S N
_Push_-78_space][S S S T S N
_Push_2_p][S S T T N
_Push_-1_m][S S S T T T N
_Push_7_u][S S T T S N
_Push_-2_l][S S S T S N
_Push_2_p][S S T T S S T T T S N
_Push_-78_space][S S T T T S S T T N
_Push_-51_;][S S T T T N
_Push_-3_k][S S T T S N
_Push_-2_l][S S T T S T N
_Push_-5_i][S S T T N
_Push_-1_m][S S T T S S T T T S N
_Push_-78_space][S S T T N
_Push_-1_m][S S S T T T N
_Push_7_u][S S T T S T N
_Push_-5_i][S S S N
_Push_0_n][S S T T S T N
_Push_-5_i][S S T T S N
_Push_-2_l][S N
S _Duplicate_-2_l][S S S T N
_Push_1_o][S S T T T T T S N
_Push_-30_P][N
S S N
_Create_Label_LOOP][S S S T T S T T T S N
_Push_110][T S S S _Add][T N
S S _Print_as_char][N
S N
N
_Jump_to_Label_LOOP]
온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).
오른쪽 Weatherheaded sweetheart haberdasheress!
:
[S S T T S S S T S S N
_Push_-68_!][S S S T T T S N
_Push_14_s][S N
S _Duplicate_14_s][S S S N
_Push_0_e][S S S T T S T N
_Push_13_r][S S S N
_Push_0_e][S S S T T N
_Push_3_h][S S S T T T S N
_Push_14_s][S S T T S S N
_Push_-4_a][S S T T N
_Push_-1_d][S S S T T S T N
_Push_13_r][S S S N
_Push_0_e][S S T T T N
_Push_-3_b][S S T T S S N
_Push_-4_a][S S S T T N
_Push_3_h][S S T T S S S T S T N
_Push_-69_space][S S S T T T T N
_Push_15_t][S S S T T S T N
_Push_13_r][S S T T S S N
_Push_-4_a][S S S N
_Push_0_e][S S S T T N
_Push_3_h][S S S T T T T N
_Push_15_t][S S S N
_Push_0_e][S N
S _Duplicate_0_e][S S S T S S T S N
_Push_18_w][S S S T T T S N
_Push_14_s][S S T T S S S T S T N
_Push_-69_space][S S T T N
_Push_-1_d][S S S N
_Push_0_e][S S T T N
_Push_-1_d][S S T T S S N
_Push_-4_a][S S S N
_Push_0_e][S S S T T N
_Push_3_h][S S S T T S T N
_Push_13_r][S S S N
_Push_0_e][S S S T T N
_Push_3_h][S S S T T T T N
_Push_15_t][S S T T S S N
_Push_-4_a][S S S N
_Push_0_e][S S T T T T S N
_Push_-14_W][N
S S N
_Create_Label_LOOP][S S S T T S S T S T N
_Push_101][T S S S _Add][T N
S S _Print_as_char][N
S N
N
_Jump_to_Label_LOOP]
온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).
설명:
먼저 스택을 뒤집어 빌드합니다. 숫자 푸시는 다음과 같이 수행됩니다.
S
시작시 : 스택 조작 사용S
: 다음 숫자를 스택에 푸시S
/T
:S
양수이고T
음수 인 부호 비트- 일부
T
및S
다음N
스택 (이진로두고 수 :T=1
및S=0
).
그런 다음 스택을 뒤집어 반복하여 모든 것을 문자로 인쇄합니다. 다음과 같이이 작업을 수행합니다.
- 0을 누릅니다 (
SSSN
) - 위에서 설명한대로 반전 된 문자를 나타내는 모든 숫자를 누릅니다.
Label_0
(NSSN
)만들기
- 스택 상단을 복제합니다 (
SNS
) - 이 값이 0 인 경우 :
Label_1
(NTSTN
)로 이동 - 그렇지 않은 경우 : 스택 상단을 튀어 문자 (
TNSS
) 로 인쇄하십시오. Label_0
(NSNN
)로 이동
- 스택 상단을 복제합니다 (
- 만들기
Label_1
(NSSTN
)
위의 두 프로그램의 기본 레이아웃입니다. 이 기본 레이아웃의 변경 로그는 바이트 수를 더욱 줄였습니다.
-
모든 숫자는 같은 양만큼 ( 첫 번째 프로그램 에서, 두 번째 프로그램에서 ) 낮아져 현재 낮은 숫자에 사용되는 이진수를 줄이고 단계 3.2와 3.3 사이에 다음 두 하위 단계가 추가됩니다.
100
110
102
101
SSSTTSTTTSN
프로그램 1에서 110 ( )을 누르 거나SSSTTSSTSTN
프로그램 2에서 101 ( )을 누릅니다.- 스택의 상위 두 값을 서로 팝하고 추가하면 결과가 스택의 새 상단입니다 (
TSSS
)
-
또한 사용한
SNS
골프에 사용되는 스택의 상단 복제 어떤 경우에는ll
,ll
,ee
와ss
. -
또한 4 단계 (create
Label_1
)가 완전히 제거되었습니다. 오류와 함께 종료되지만 여전히 모든 것을 올바르게 출력합니다 ( meta에 따라 허용됨 ). -
n
스택 상단에서 ‘0 번째 값 을 복사 할 수 있습니다 (STS
+ 0-indexed 사용n
) 경우에 따라 새 숫자를 만드는 것보다 짧습니다.
첫 번째 프로그램에서 나는이 일을했습니다 두 번째p
의pop
(STSSTN
(복사 1 일)보다 짧은SSSTTSSN
, 두 번째는 ( ‘P’에 대한 번호를 생성))l
에서lol
(STSSTN
(복사 1 일)보다 짧은SSSTSSSN
‘L’의 수를 생성 ( )) 제p
의p p
(STSSTN
(사본 1)이보다 짧은SSSTTSSN
( ‘P’의 개수를 생성)) 제p
의pumlp
(STSSTTN
(사본 3)은보다 짧은SSSTTSSN
‘P’의 개수를 생성 ()) 제p
의pmup
(STSSTSN
( 사본 2)보다 짧음SSSTTSSN
) 제 ( ‘P’의 개수를 생성)m
에서m m
(STSSTN
보다 짧은 (사본 1)를SSSTSSTN
( ‘m’의 개수를 생성)) 제i
의ini
(STSSTN
(사본 1)이보다 짧은SSSTSTN
( ‘I’에 대한 번호를 생성) ).
두 번째 프로그램에서는이 작업이 수행되지 않습니다. 일부 사이의 거리는ere
또는 처럼 꽤 짧지ded
만 ‘e'(SSTTN
) 또는 ‘d'(SSTTSN
) 의 숫자를 만드는 것은 copy 1st (STSSTN
) 보다 짧거나 같은 길이 이므로이 트릭을 적용 할 수 없습니다 바이트를 저장하는 두 번째 프로그램. 참고 : 골프 단계 7 이후에이 모든 것이 더 이상 적용되는 것은 아닙니다. -
두 프로그램 모두 루프의 1 단계를
SSSN
(Push 0)에서SSN
(Push error_value)로 변경하고 3.1 (SNS
Duplicate) 및 3.2 (NTSTN
If 0 : Exit) 단계를 제거했습니다 . 이제SSN
액세스하려고하면 알 수없는 값 의 오류와 함께 종료됩니다 . -
SSN
두 프로그램에서 (error_value)를 완전히 제거했습니다 . 이제 스택에 아무것도 남지 않은 상태에서 추가 기능을 수행하려고하면 ” Ca n’t do Infix Plus ” 오류와 함께 중지됩니다 . -
상수의 값은 변경
100
및102
행110
과101
각각있다. 여기에110
상수 를 생성하는 데 사용되는 Java 프로그램이 있습니다 . 그리고 여기에101
상수 를 생성하는 데 사용되는 Java 프로그램이 있습니다. 지금은 적습니다새로운 값은 많은 경우에 복사본보다 짧기 때문에 다시 밀어 넣기가 짧기 때문에 위의 4 지점에서 설명한 것보다 복사가 사용됩니다.
답변
Lenguage, this many bytes
왼쪽은 65721878296123796350462639500449228197646164622176218219262161264085219054330862921130017235140285847450697804123168755463678390611789188813352602373675420824698785508893489685489807676509031860196742608788337382365939621331808046993938743187441299393 a
다음 브레인 퍽 프로그램에 해당 문자 :
-[--->+<]>-----.[--->+<]>-.---..---.+++++.-----.++++++++++++.--------.[->+++++<]>-.+[----->+<]>.----.+++.-.--[->+++<]>.+[-->+<]>++.[-->+++++++<]>.----.+++++++++.--------.+++.[------->++<]>.[-->+++++++<]>.+++++.--------.+++.-----.--.+++++.[-->+<]>++++.+[-->+<]>++.++[--->++<]>.+++.---..---.+++++++.-.+.[--->++++<]>-.
오른쪽에는 636605880289050800007960838028215177632402180834140124157618258152393860687206680356620669530585999501769442445842690365640523699585001167392310123764258380235064746704898152544431842440556280249638840374132783257375880144623575829131522611446544303839106505176776161206935275549421170646618266717893044911373119804737614528140의 반복 인 p
다음 브레인 퍽 프로그램에 해당 문자 :
+[--->++<]>+.++[->++++<]>+.----.--[--->+<]>-.------------.---.+++++++++++++.----------.---.----.+++.+.-.-[--->+<]>-.---[->++++<]>-.++++.[->+++<]>..[--->+<]>---.------------.---.----.--[--->+<]>---.++.[---->+<]>+++.-[--->++<]>--.-------.+.+++.+++++++++++++.--------------.---.--[--->+<]>--.-----------.---.+++++++++++++.-------------.[--->+<]>----..+[-->+++++<]>-.
답변
CJam , 128 + 192 = 320 바이트
64G^c111c111Z^cT$111c6^111X^c1$116X^c111Y^c32c1$6$Y3#$111c4^56Z^c32c112c13$A$A$3$5$1$4$4$4$12$22$22$14$32c13$111c1$T$7$A$4$1$63c
'U))'i(((('_))'u('i('i(((('p))'i('i(((('_))'_)))))'i(((('_)))))'&(((((('u(('u))'i(((('i(((('u('i('i(((('_))'p))'u('&(((((('i('_))'_)))'i(((('p))'_)))))'_))'u(('i('i(((('p))'i(((('u(('u(('&(((((
답변
핵분열 , 958 + 752 = 1710 바이트
._.
왼쪽
D
z
^@$$$$$$$$$$$$$$$$$$$@!@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@!@~~~@!!@~~~@!@$$$$$@!@~~~~~@!@$$$$$$$$$$$$@!@~~~~~~~~@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@!@~~~~@!@$$$@!@~@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@!@~~~~@!@$$$$$$$$$@!@~~~~~~~~@!@$$$@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@!@$$$$$@!@~~~~~~~~@!@$$$@!@~~~~~@!@~~@!@$$$$$@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~@!@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@!@$$$@!@~~~@!!@~~~@!@$$$$$$$@!@~@!@$@!@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@!V
권리
} \} \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \} \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \ } \
O________________________________________I'/O\/O\__u'/O\____i'/O\++p'/O\___/O\_i'/O\__u'/O\___/O\_____i'/O\++p'/O\+++/O\+/O\_______/O\_i'/O\_________________________________________I'/O\_u'/O\++p'/O\____/O\___/O\_i'/O\_u'/O\/O\____i'/O\++u'/O\__u'/O\_________________________________________I'/O\_/O\+/O\+++/O\____/O\___/O\_i'/O\++p'/O\___/O\_i'/O\_u'/O\____/O\____i'/O\+++++++P'L
좋아, 여기에 우리는 평범한 행운을 빕니다. 실제로 ._.
Fission의 첫 번째 멋진 기능은 AKA atom :이라는 명령 포인터를 만드는 4 개의 명령이 있다는 것입니다. RLDU
따라서 왼쪽 및 오른쪽 그룹에 대한 두 개의 명령이 있습니다.
두 번째 행운의 부적은 출력 !
과에 대한 두 가지 명령으로 O
, 다른 그룹에서 발생합니다.
세 번째 매력. 두 출력 코만 트는 원자 질량에 해당하는 ASCII 출력을 출력합니다. 그래서 나는 그것을 어떻게 바꿔야합니다. 운이 좋은 날! 모두 + (+1 mass)
와 _ (-1 mass)
한 그룹 및 모든 필요한 세에 $ (+1 energy)
, ~ (-1 energy)
, @ (swap mass and energy)
다른 그룹에 있습니다.
또한 두 그룹의 원자를 제어하는 거울이 있습니다! 하지만 첫 번째 프로그램에서는 사용하지 않았습니다
따라서 나를 막을 수있는 것은 없지만, 크기를 단계별로 설정하여 소형화 할 수는 없습니다.
첫 번째 프로그램
첫 번째 프로그램은 Dz^@$~!V
D create atom, going down
z set its mass to ASCII code of 'z'
^ split atom in 2, dividing their mass. One goes left, second - right
시작은 더 간단 할 수 있지만 (단지 R
) 나누기를 사용하면 첫 글자에 약간의 바이트가 절약됩니다.
왼쪽으로가는 Atom은 주위를 둘러싼 다 V
.
두 번째 원자는 고정 @...@!
되어 각 문자가 출력 될 때 마다 반복되는 패턴 을 만나게됩니다 .
@ swap atom's mass and energy
... increament or decrement energy until it would match desired ASCII code
@ swap again
! print character by atoms mass
결국 그것은 V
첫 번째 원자의 운명을 만나고 공유 할 것 입니다. 키보드의 왼쪽 부분으로 그것들을 파괴하거나 멈추는 방법은 없습니다.
두 번째 프로그램
두 번째는 기복이 있습니다. 질량을 직접 바꿀 수있는 쉼표가 있지만 출력 명령은 O
원자를 파괴하므로 어떻게 든 보존해야합니다. 원자가 왼쪽으로 이동
하면서 프로그램이 오른쪽에서 시작됩니다 L
.
반복되는 패턴 :
} \
/O\...X'
'
일부의 코드는, 그래서 풋 다음, 원자 ‘질량 문자의 ASCII 코드를 encoutered X
먼저 저장되는 질량에 의해 변경되는 것보다, _
그리고 +
정확한 값으로.
가끔은 X'
그냥 사용이 짧은 경우, 건너 뛴 것입니다 _
및 +
.
원자는 왼쪽에서 나오고, 두 번 거울에 쳐서 왼쪽에서칩니다 }
. 이 경우 }
두 개의 동일한 원자를 위아래로 보내는 클론처럼 작동합니다. 아래쪽 원자는 거울로 반사되어 왼쪽으로갑니다. 위로 원자 포장, 같은 거울을 맞았지만 아래에서 맞아서 맞고 O
인쇄 하고 맞습니다 .
결국 마지막 원자는 O
파괴되기 위해 최종 을 만난다 .