안녕하세요 세상 !!! 피보나치 분포


21
  1. 프로그램은 Hello world!!!줄 바꿈이 있든 없든 정확하게 출력해야합니다 .
  2. 프로그램은 입력하지 않아야합니다.
  3. 소스 코드 문자 분포는 다음에 따라 정확해야합니다.
    • 의 수 숫자 (0-9) 정확히 하나의 피보나치 시퀀스 번호가 있어야합니다.
    • 소스 코드 의 다른 숫자가 아닌 문자 ! (0-9)의 수는 위의 피보나치 시퀀스 번호 앞에 정확하게 피보나치 시퀀스 번호 여야합니다.

소스 코드에서 유효한 문자 분배의 네 가지 예 :

  • 13 자리 숫자, 8 자리 숫자가 아닌 문자.
  • 34 개의 숫자, 21 개의 숫자가 아닌 문자.
  • 55 개의 숫자, 34 개의 숫자가 아닌 문자.
  • 89 개의 숫자, 55 개의 숫자가 아닌 문자.

이것은 바이트 단위로 코드 골프, 짧은 코드입니다! 행운을 빕니다!

편집 :이 질문은 코드 골프와 함께 소스 코드 크기에 제약이 있기 때문에 허용되는 답변 (두 개 이상의 동등한 우승자 길이를 공유하는 경우)은 대부분의 투표 (및 최소 문자 수)의 답변이됩니다. 03-01.


6
따라서 모든 솔루션의 문자 수는 피보나치 수입니다.
Howard

1
다음은 답변을 확인하는 프로그램입니다 (입력 상자에 코드를 붙여 넣기).
Justin

1
55 자 미만으로이 작업을 수행 할 수 있습니까? 필요한 출력에는 14 문자가 있으며 문자 당 적어도 하나의 문자를 사용하지 않고 숫자를 사용하여 문자를 출력 할 수있는 언어를 생각할 수 없습니다.
저스틴

2
@Plarsen은 확실히 확인되지 않음
John Dvorak

1
좋아, 나는 그때 규칙을 바꾸지 않을 것이다 :)
Plarsen

답변:


27

Windows 명령 프롬프트 -34 자, 8 자 , 5 자 (아래 2 자)

* 이 규칙은 규칙 2를 위반할 수도 있고 아닐 수도 있지만 여기에 있습니다.

%~099

파일 이름을 지정하십시오.

&start call echo Hello world!!!&exit -b .cmd


이제 파일 시스템을 약간 손상시킵니다-2 문자 (또는 원하는 경우 더 적음)

A1

선호하는 정통 방법을 사용하여 파일 이름을 지정하십시오.

"&start call echo Hello world!!!&exit&.cmd

어떻게 작동합니까 :

cmd 스크립트는 'cmd.exe / C "% 1"% *'로 호출되므로 실행 된 명령은 다음과 같습니다.

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

다음 순서로 진행됩니다.

  • "c : \ PATH_TO_THE_SCRIPT \"를 실행하지 못했습니다.
  • 새로운 쉘 프린팅 Hello world를여십시오! \ n
  • 원래 쉘을 종료

2
와우! 나는 규칙이 아무런 입력도하지 않았다면 승자가 있다고 생각합니다. 상자 밖 사고에 +1.
Plarsen

2
Windows CMD를 사용한 코드 골프 ... +1. 또한 "입력 없음"이 "STDIN을 읽지 않음"을 의미했을 수도 있습니다. : P
Camilo Martin

1
그것은 다른 코드 골프들에게는 흥미로운 속임수입니다. 파일 이름에 실제 코드를 작성하고 eval $0그것을 실행 하는 것과 같은 것을 사용 하십시오. <rolleyes>
Tobia

1
불가능 해 !! 5 문자? 정말 흥미로운 접근법
Plarsen

1
사실, 나는 방금 2 char 솔루션을 게시했습니다 .
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

설정에 다음이 포함되어 Hello world!!!있다고 가정하면 평가되는 MySQL 표현식입니다 . 정확히 21 자리와 13 자리가 아닌 숫자를 포함합니다.sql_modePIPES_AS_CONCAT

이것이 유효한 출품작인지 여부는 배심원에게 맡깁니다.

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
무슨 ... CMD와 SQL 우승 코드 골프 ??
Camilo Martin

select와는 ;틀림없이 문장의 일부,하지만 여전히 영리한 솔루션입니다.
primo

@primo 그들은 그렇기 때문에 이것이 자격이되는지 확실하지 않습니다. 그러나 나는 그것을 더 크게하기 위해 그것을 올릴 것이라고 생각했다 ;-)
Tobia


11

GolfScript, 55 자

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

34 자 솔루션을 가질 수있는 방법을 찾지 못했기 때문에 이것을 만들었습니다.


10

빌 펀지 98-55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

비용이 들지 않기 때문에 줄 바꿈으로 결정했습니다. 숫자는 피보나치 수열의 연결된 값입니다.


8

파이썬 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

예. 나는 숫자를 낭비합니다. 당신은 그것에 대해 무엇을 할 것인가?


pi ~ 3이 그렇게 유용하다는 것을 누가 알았습니까!
Kyle Kanos

1
질문은 숫자가 아닌 숫자에 34를 더한 숫자 34를 나타내며, 숫자가 아닌 숫자에 34를 더한 숫자는 21 숫자입니다.
user12205

1
"hello world"는 "Hello world"여야합니다. 그것은 대문자 h입니다.
Justin

7

C (89 자)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

불행히도 위의 내용은 유효하지만 다음 프로그램으로 압축하려는 노력이 사양을 충족하지 않습니다. 나는 가치가 있다고 생각하고 다른 사람은 조금 줄일 수 있습니다 (64 자, 37 자, 27 자릿수 제외). 컴파일하려면 clang과 with을 사용해야 -fms-extensions합니다.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

복합 리터럴 은 찾고자하는 이름입니다. 나는 이것을 21 문자로 줄이기 위해 그들을 사용하려고합니다!
charmlessCoin

내가 도달 할 수있는 가장 작은 숫자가 아닌 숫자는 i전역입니다 (생략 int). 을 사용 long하면 쉼표를 절약 할 수 있지만 비용이 더 많이 듭니다. 21은 매우 멀다.
우고 렌

예, 많은 공간 낭비입니다. 그 작은 트릭을 사용하여 얻을 수는 main(){puts((int[]){1819043144,1870078063,560229490,8481});}있지만 여전히 60 자입니다. 몇 가지만 더 제거 할 수 있다면 ... 편집 : 와우, 글로벌 사람들은 선언 할 필요가 없습니까? 누가 알았 겠어?
vmrob

@vmrob, 글로벌은 선언을해야합니다. 이에 유형의 기본값은 int, 그래서 a;동일합니다 int a;.
우고 렌

@ugoren 나는 그들이 선언을해야한다는 것을 알았습니다.
vmrob

6

Windows PowerShell (아마도 Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

네트워크 액세스에 대해 아무 말도하지 않았으므로 여기에 더러운 해결책이 있습니다. 두 번째 시도에서 글자 수가 적은 bit.ly URL이 있습니다. 불행히도 여전히 21 자리가 아닌 숫자이며 34 자리 숫자가 필요하거나 낭비됩니다.


bit.ly 링크를 바로 편집 할 수 있다는 것을 알고 있습니까?
Timtech

무슨 소리 야, 편집? 또한, 나는 어떤 경우에도 13 글자 이하로 이것을 얻지 못할 것입니다.
John Dvorak

"복사"옆에있는 연필을 누르고 링크를 편집 할 수 있습니다. 그렇게하면 모든 이전 버전이 계속 작동합니다.
Timtech

1
34로 단축! curl 37.187.42.18/?hw=112358132134
Dom Hastings



5

배쉬, 2 문자

아주 드물게 Robert의 답변이 실격되지 않는 경우가 있습니다.

$0

파일 이름을 지정 echo Hello world!!!하고로 실행하십시오 sh.


5

파이썬

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

자릿수 : 55 자릿수 : 34


솔루션에 주석이 없습니다. 코드 만.
Elisha

4

PHP (55 바이트)

이 프로그램은 이진법을 사용합니다. 숫자가 아닌 21 자, 34 개의 숫자 문자가 지루하기 때문에 문자가 없습니다.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@ JanDvorak : "전후"를 읽는 것이 거의 확실합니다. 오, 그럼 고칠 게요.
Konrad Borowski

4

매스 매 티카 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

산출

Hello World!!!

4

자르기 (34 자)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

불행히도 Sclipting은 ASCII 문자를 전혀 사용하지 않으므로 21 개의 쓸모없는 숫자 문자로 프로그램을 채워야합니다.


2

포스 또는 루비, 55

(숫자 34 개 + 숫자가 아닌 21 개)

앞으로

." Hello world!!!" \ 3141592653589793238462643383279502

루비

puts"Hello world!!!"#3141592653589793238462643383279502

댓글을 사용하여 채색하면 더러워 지지만 올바른 답변입니다.


2

J (55 자)

(숫자 34 개 + 숫자가 아닌 21 개)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 바이트

233 자
144 숫자
89 비 숫자

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

출력 :

Hello world!!!


-1

윈도우 배치

echo Hello World!!!::0123456789012345678901234567890123

12
와우. 이것은 내 sh 솔루션과 너무 다릅니다.
user12205

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.