그래서 … 어 … 이건 좀 창피 해요. 그러나 “Hello, World!”라는 평범한 것이 없습니다. (태그 35 개 변종에도 불구하고 아직 도전 안녕하세요 세계를 , 그리고 계산). 이것이 공통 언어에서 가장 흥미로운 코드 골프는 아니지만 특정 esolang에서 가장 짧은 솔루션을 찾는 것은 심각한 도전이 될 수 있습니다. 예를 들어, 내가 아는 한 가장 짧은 Brainfuck 솔루션이 아직 발견되었는지 여부는 알 수 없습니다.
또한 모든 Wikipedia (Wikipedia 항목 이 삭제 되었지만 archive.org에 사본이 있음
) 동안 esolangs 및 Rosetta Code 에는 “Hello, World!”목록이 있습니다. 프로그램에서 이들 중 어느 것도 각 언어에 대해 가장 짧은 것에 관심이 없습니다 ( 이 GitHub 리포지토리도 있습니다 ). 우리가 코드 골프 커뮤니티에서 중요한 사이트가되고 싶다면, 가장 짧은 “Hello, World!”의 궁극적 인 카탈로그를 만들어보아야한다고 생각합니다. 프로그램 ( 기본 퀴네 챌린지가 다양한 언어로 알려진 가장 짧은 퀴인 을 어떻게 포함 하는지와 유사 함). 자 이렇게하자!
규칙
- 각 제출물은 전체 프로그램이어야합니다.
- 프로그램은 입력을받지 않아야
Hello, World!
하며 STDOUT (대문자 및 구두점을 포함한이 정확한 바이트 스트림)과 선택적인 후행 줄 바꿈 및 기타 옵션으로 인쇄해야합니다 . - 프로그램은 STDERR에 아무것도 쓰지 않아야합니다.
-
빈 프로그램이 인쇄되는 언어를 만들어서 이것을 남용하고 싶을 경우
Hello, World!
, 그들은 매우 지루한 답변을위한 길을 열었습니다.제출물을 테스트하려면 통역사가 있어야합니다. 이전에 구현되지 않은 언어에 대해이 통역사를 직접 작성할 수 있습니다.
- 제출은 적절한 (기존의) 인코딩, 일반적으로 (필요하지는 않지만) UTF-8 로 바이트 단위 로 점수가 매겨 집니다. Folders 와 같은 일부 언어 는 점수를 얻기가 다소 까다 롭습니다. 의심스러운 경우 Meta에 문의하십시오 .
- 이 찾는 것에 대해 아닙니다 최단와 언어 “안녕하세요, 세계!” 프로그램. 가장 짧은 “Hello, World!”를 찾는 것입니다. 모든 언어로 프로그램. 따라서 나는 어떤 대답을 “허용”으로 표시하지 않을 것이다.
- 선택한 언어가 이미 답을 가지고있는 다른 (잠재적으로 더 널리 사용되는) 언어의 사소한 변형 인 경우 (BASIC 또는 SQL 방언, 유닉스 쉘 또는 Alphuck과 같은 사소한 Brainfuck-derivatives를 생각하십시오) 기존 답변에 메모를 추가하는 것이 좋습니다 동일하거나 매우 유사한 솔루션은 다른 언어에서도 가장 짧습니다.
부수적으로, 골프가 많지 않은 언어에서는 지루한 (그러나 유효한) 답변을 줄이지 마십시오 . 가능한 한 완전한 카탈로그를 컴파일하려고 시도 하므로이 질문에 여전히 유용합니다. 그러나, 이렇게 저자가 실제로 코드를 골프에 노력을했다 언어로 주로 upvote에 답변을.
영감을 얻으 려면 Hello World Collection을 확인 하십시오 .
카탈로그
이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어별로 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
## Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :
## Ruby, <s>104</s> <s>101</s> 96 bytes
헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .
## Perl, 43 + 2 (-p flag) = 45 bytes
언어 이름을 링크로 만들면 스 니펫에 표시됩니다.
## [><>](https://esolangs.org/wiki/Fish), 121 bytes
답변
멈춤, 0 바이트
글쎄, 그보다 짧을 수는 없습니다 … 빈 프로그램이 Stuck에 출력 Hello, World!
됩니다 .
답변
PHP, 13 바이트
Hello, World!
예. 효과가있다.
답변
Brainfuck, 78 바이트
개방형 현상금 : 누구나이 점수를 향상시킬 수 있으면 현상금 (+500)을 그들에게 전달합니다.
@KSab은 76 72 바이트 솔루션을찾았습니다!
--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.
처음 28 바이트 --<-<<+[+[<+>--->->->-<<<]>]
는 다음과 같은 반복 관계로 테이프를 초기화합니다 (mod 256).
f n = 171 · (-f n-1 -f n-2 -f n-3 + 1) 로 f 0 = 57 , f 1 = 123 및 f 2 = 167 입니다.
(171)의 요인으로 인해 발생 3 -1 ≡ 171 MOD (256)를 . 현재 값이 변환 될 때 <+>---
마다 매번 3을 빼는 1 개의 셀 백 (비아 )이 효과적으로 값에 171을 곱합니다.
에서는 N = 220 번역되는 제로 값이고, 반복 정지한다. 중지 점 앞의 10 바이트는 다음과 같습니다.
[130, 7, 43, 111, 32, 109, 87, 95, 74, 0]
여기에는 Hello, World!
약간의 조정만으로 헌트 앤 페크 방식 으로 생산에 필요한 모든 구성 요소가 포함됩니다 .
또한 대체 78 바이트 솔루션을 찾았습니다.
-[++[<++>->+++>+++<<]---->+]<<<<.<<<<-.<..<<+.<<<<.>>.>>>-.<.+++.>>.>-.<<<<<+.
나는 여러 가지 이유로 첫 번째보다 낫다고 생각합니다. 집에서 남은 셀을 적게 사용하고, 더 적은 셀을 수정하고, 더 빨리 종료합니다.
자세한 세부 사항
재발 관계는 놀랍게도 Brainfuck의 표현을 간직했습니다. 일반적인 레이아웃은 다음과 같습니다.
{...s3}<{s2}<{s1}[[<+>->{c1}>{c2}>{c3...}<<<]>{k}]
이는 다음을 나타냅니다.
f n = c 1 · f n-1 + c 2 · f n-2 + c 3 · f n-3 + … + k
와
f 0 = s 1 , f 1 = s 2 + c 1 · f 0 + k , f 2 = s 3 + c 2 · f 0 + c 1 · f 1 + k 등
또한,는 <+>
정지 점에 영향을주지 않고 범위에 상수를 곱하도록 변경 될 수 있으며 >{k}
, 다시 정지 점에 영향을 미치지 않고 범위를 상수로 이동 시키기 위해 항이 추가 될 수있다 .
다른 예
피보나치 수열
+[[<+>->+>+<<]>]
N- 곤수
삼각수
+[[<+>->++>-<<]>+]
중도 F , N = 2 · f를 N-1 – F를 N-2 + 1 과 F 0 = 0 , F (1) = 1 .
제곱 숫자
+[[<+>->++>-<<]>++]
오각형 숫자
+[[<+>->++>-<<]>+++]
기타
BF 크런치
github 에서이 솔루션 중 일부를 찾는 데 사용한 코드를 게시했습니다 . .NET 4.0 이상이 필요합니다.
Usage: bfcrunch [--options] text [limit]
Arguments
------------------------------------------------------------
text The text to produce.
limit The maximum BF program length to search for. If zero, the length of the
shortest program found so far will be used (-r). Default = 0
Options
------------------------------------------------------------
-i, --max-init=# The maximum length of the initialization segment. If excluded, the
program will run indefinitely.
-I, --min-init=# The minimum length of the initialization segment. Default = 14
-t, --max-tape=# The maximum tape size to consider. Programs that utilize more tape than
this will be ignored. Default = 1250
-T, --min-tape=# The minimum tape size to consider. Programs that utilize less tape than
this will be ignored. Default = 1
-r, --rolling-limit
If set, the limit will be adjusted whenever a shorter program is found.
-?, --help Display this help text.
출력은 세 줄로 제공됩니다.
- 발견 된 프로그램의 전체 길이 및 초기화 세그먼트.
- 현재 테이프 포인터로 시작하는 경로입니다. 각 노드는 (포인터, 비용)으로 표시되는 하나의 출력 문자에 해당합니다.
- 사용 된 테이프 세그먼트.
예를 들어, 최종 결과 bfcrunch "hello world" 70 -r -i23
는 다음과 같습니다.
64: ++++[[<+>->+++++>+<<]>]
49, (45, 5), (44, 3), (45, 6), (45, 1), (45, 4), (42, 4), (43, 5), (45, 3), (45, 4), (46, 2), (44, 4)
32, 116, 100, 104, 108, 132, 0, 0, 132, 0
이것은 전체 프로그램에 해당합니다.
++++[[<+>->+++++>+<<]>]<<<<.<+.>++++..+++.<<<.>+++.>>.+++.>.<<-.
다른 기록들
안녕, 월드!
랩핑, 78 바이트 :
--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.
또는
-[++[<++>->+++>+++<<]---->+]<<<<.<<<<-.<..<<+.<<<<.>>.>>>-.<.+++.>>.>-.<<<<<+.
랩핑되지 않은 87 바이트 (이전 92 바이트 (mitchs) ) :
--->->->>+>+>>+[++++[>+++[>++++>-->+++<<<-]<-]<+++]>>>.>-->-.>..+>++++>+++.+>-->[>-.<<]
안녕, 세상!
랩핑, 80 바이트 :
++<-[[<+>->+>--->-<<<]>+++]>+.<<<<<<<++.>>>..>.<<--.<<<--.>>+.>>>.+++.<.<<<-.<+.
랩핑되지 않은 81 바이트 (이전 92 바이트 (히로세) ) :
+>---->->+++>++>->+[++++++++[>++++++++>>+++++<<<-]<]>>.>++>.>..+>>.+>-->--[>-.<<]
안녕, 세상!
랩핑, 74 바이트 :
-<++[[<+>->->+++>+<<<]->]<<.---.<..<<.<<<---.<<<<-.>>-.>>>>>.+++.>>.>-.<<.
랩핑되지 않은 84 바이트 :
---->+++>++>->->++[+++++++[>+++++[>++>>+<<<-]<-]++<]>>>>.---.>---..+>->.+>-->+>[-.<]
에 솔랑 버전
안녕하세요 세계! \ n
줄 바꿈, 76 바이트 :
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.[<]>+.
이것은 집 왼쪽에 하나의 셀을 사용하므로 77로 간주됩니다.
랩핑되지 않은 83 바이트 :
->+>>>+>>---[++++++++++[>++++++>+++>+<<<-]-<+]>+>+.>.->--..>->-.>[>.<<]>[+>]<<.>++.
Rdebath가 승인되었습니다 . profilebf 출력 :
Hello World!
Program size 83
Final tape contents:
: 0 0 73 101 109 115 112 88 33 10 0
^
Tape pointer maximum 10
Hard wrapping would occur for unsigned cells.
Counts: +: 720 -: 79 >: 221 <: 212
Counts: [: 9 ]: 84 .: 13 ,: 0
Total: 1338
inversed.ru (피터 카 포프)
안녕하세요 세계!
랩핑, 70 바이트 (이전 78 1 ) :
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.
랩핑되지 않은 77 바이트 (이전 89?) :
->+>>>+>>-[++++++[>+++++++++>+++++>+<<<-]<+]>>.>--.->++..>>+.>-[>.<<]>[>]<<+.
저자는 가장 짧은 손으로 코딩 한 “Hello World!” 89 바이트이지만 참조를 제공하지 않습니다. 본인도 이에 대한 기록을 주장합니다.
안녕 세상!
랩핑, 65 바이트 (이전 66 바이트) :
+++[>--[>]----[----<]>---]>>.---.->..>++>-----.<<<<--.+>>>>>-[.<]
이것은 실제로 수동으로 코딩됩니다 (크 런칭으로 찾을 수있는 최선은 68 바이트입니다 ). 첫 번째 셀은 259 (3)로 초기화되고 각 반복마다 7 씩 감소하여 37 회 반복됩니다. 다음 셀은 6 씩 감소하여 256-6 · 37 = 34가 됩니다. 나머지 셀은 매번 4 씩 감소하여 각 반복마다 하나의 셀을 추가하고 각 새 셀은 252 (-4)로 초기화됩니다. 결과는 다음과 같습니다.
[ 3, 0, 0, 0, 0, 0, 0, ...]
[252, 250, 248, 0, 0, 0, 0, ...]
[245, 244, 244, 248, 0, 0, 0, ...]
[238, 238, 240, 244, 248, 0, 0, ...]
[231, 232, 236, 240, 244, 248, 0, ...]
[224, 226, 232, 236, 240, 244, 248, ...]
...
[ 35, 64, 124, 128, 132, 136, 140, ...]
[ 28, 58, 120, 124, 128, 132, 136, ...]
[ 21, 52, 116, 120, 124, 128, 132, ...]
[ 14, 46, 112, 116, 120, 124, 128, ...]
[ 7, 40, 108, 112, 116, 120, 124, ...]
[ 0, 34, 104, 108, 112, 116, 120, ...]
1 주어진 솔루션 (79 바이트)을 1 씩 줄일 수 있습니다.
-[>>+>+[++>-<<]-<+<+]>---.<<<<++.<<----..+++.>------.<<++.>.+++.------.>>-.<+.
답변
답변
시드 , 6016 4234 4203 바이트
20 854872453003476740699221564322673731945828554947586276010721089172712854441839676581917455319274850944955030258951339804246125714958815519550291630078076933441706558540342671975808828643360922071900333028778314875248417953197990571991784126564752005357199892690656368640420204822142316716413192024742766282266114842280731756458212469988291309261528542889299297601723286769284159107438930448971911102280330101196758384815655479640836157495863547199726234352265518586460633795171196315255736880028338460236768181141732764911402112878175632130129852788301009582463631290071329795384336617491655825493435803011947670180368458659271192428341035912236946048939139042310380278430049252171822721598175984923434205610723412240162418996808671543770639111617709604242882388664919702606792443015941265168129550718541372361144081848761690730764968771245566074501485020726368378675085908872608679630368472956274468410052703615106090238423979678950131481176272880569100533049143775921798055136871254424261001442543122666701145111965968366507060931708140304772342855064834334129143038575569044150428480231956133612367393837580345180691911525531699573096952433882387811884727975431823620782822755161559988205401134640722220804177812794328129589949692446031008866917615922944976151073653201316255518389496411696741029209242119521978920200314572718584995265523235225587228975886710511855501710470163649632761488899317729943053884132314641377747687975638119132094777769497069556255954031537245957811105217875011509899497752696062748928963281605780942517262774976217663461063680912331030221981433051827519906741285738915397005702326447635845195923640649166530310494885569783989508000344280715868581532826832242144647203531393142251025361866506821695860883605004105862208004440476654027574832078603305884731766236740069411566854496824754558761536201352147934963241039597221404341132342297870517293237489233057335406510464277610336142382379135365550299895416613763920950687921780736585299310706573253951966294045814905727514141733220565108490291792987304210662448111170752411153136765318541264632854767660676223663544921028492602135525959428999005153729028491208277493747933069008199074925710651071766675870081314909460661981433426167330215548196538791617762566403934129026219366764038390123622134753742930729751695349588862441999672547791630729398908283091638866715502470152431589429837867944760012419885615525232399584379209285060418518373512154801760060312646951597932345591416241634668119867158079946680321131213357200382937049485606706114467095019612014749723443159443363662563254359712162432143334612180576945072905749883870150120687696027984317320305291407322779803583395375616762530641605634303022155218169343410634115050596030685041633824154135240376022159918501703555881290333205131375705406831260759974112248490451605422031345264183102048614606636275942039438138959188478277971377232005036301145411215067576576667743288951344423152531417111852584846747428443123174595987315325304540564683047858415059703724263652136185848573853965992798725654430360647040362341567082462847275277303225817689141675391972818943419663764371222973269129542760661385278009266471167618553065823580448848795731295589715602705860758954890415040763604082216728159486423396295188510311881004469017351709060492844398219491990895826924575575549615118821417543037296628825303328056839433114519945243963946989899508355224823109677424196639930153649890175062456649384605721510239142861693109687536600667811037619175927995599388547421689316110236566026931360164495251160997857372500940728057700473763884480342708897319990346726967220426504612260565552531158509215849649565188655100774748485416791517853427613458459889062942881409801879085054494129489535044719193283409051007851153504224002807392992520076910314763705776345053922387355156981872691537772657428096384535960466923475731297217863371650154415835785630016335858514130863258775100537612371430357576913148500310344278511588325852376442503898849856566716198848377379400158332792027967216204970114516984638014129252882482309132898416484525230488700253065644547798869056136044415413099076332059572505138116227535024546891015836838323022822272664771489129085797354578016574544759934333471793
(에 기초하여 얻어진 비 펀지-98 프로그램 이 ) 인
"9!dlroW ,olleH"ck,@
답변
모닝 턴 초승달 , 3614 3568 바이트
더 짧은 줄 이름을 사용하여 46 바이트를 저장해 준 NieDzejkob에게 감사드립니다.
Take Northern Line to Hendon Central
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take District Line to Acton Town
Take Piccadilly Line to Holloway Road
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Acton Town
Take Piccadilly Line to Heathrow Terminals 1, 2, 3
Take Piccadilly Line to Holborn
Take Central Line to Holborn
Take Central Line to Mile End
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Barking
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Barking
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Victoria
Take Circle Line to Victoria
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Mile End
Take Central Line to Fairlop
Take Central Line to Mile End
Take District Line to Barking
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Richmond
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Richmond
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Stepney Green
Take District Line to Hammersmith
Take District Line to Stepney Green
Take District Line to Upney
Take District Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Upney
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent
이것은 확실히 차선책이지만, esolang 솔루션 크기의 절반입니다.
Hello, World
다음 스테이션 이름을 슬라이스하고 결과를 연결하여 구성됩니다.
Hendon Central
▀▀
Holloway Road
▀▀▀
Heathrow Terminals 1, 2, 3
▀▀
Wood Lane
▀▀
Fairlop
▀▀
Richmond
▀
마지막으로, 나는의 문자 코드 계산하고있어 !
등을 (2<<4)+1 == 33
. 이 모든 부품은 Paddington에 연결되고 Mornington Crescent에 인쇄됩니다.
참고 : 언어는 동일한 역을 두 번 연속으로 이동할 수 있는지 여부를 지정하지 않지만 통역사가 허용하므로 사용했습니다.
답변
이블 , 70 바이트
aeeeaeeewueuueweeueeuewwaaaweaaewaeaawueweeeaeeewaaawueeueweeaweeeueuw
다음 네 가지 명령을 사용합니다.
a - increment the register
u - decrement the register
e - interweave the register's bits (01234567 -> 20416375)
w - write the value of the register as an ASCII character