Witaj świecie!!! Rozkład Fibonacciego


21
  1. Twój program powinien wypisywać dokładnie: Hello world!!!z lub bez linefeed po.
  2. Twój program nie powinien pobierać żadnych danych.
  3. Rozkład znaków w kodzie źródłowym musi być poprawny zgodnie z:
    • Liczba znaków numerycznych (0–9) musi wynosić dokładnie jeden numer kolejny Fibonacciego.
    • Liczba innych znaków nienumerycznych ! (0-9) w kodzie źródłowym musi być dokładnie numerem sekwencji fibonacci przed powyższym numerem sekwencji fibonacci.

Cztery przykłady prawidłowego rozmieszczenia znaków w kodzie źródłowym:

  • 13 cyfr, 8 znaków nienumerycznych.
  • 34 cyfry, 21 znaków nienumerycznych.
  • 55 cyfr, 34 znaki nienumeryczne.
  • 89 cyfr, 55 znaków nienumerycznych.

To jest code-golf, wygrywa najkrótszy kod w bajtach! Powodzenia!

Edycja: Ponieważ to pytanie ma ograniczenia dotyczące rozmiaru kodu źródłowego w połączeniu z byciem kodem do golfa, zaakceptowana odpowiedź (jeśli więcej niż jedna część ma taką samą długość zwycięskiej postaci) będzie odpowiedzią na większość głosów (i najmniejszą liczbę znaków): 2014- 03-01.


6
Zatem wszystkie rozwiązania mają liczbę znaków, która jest liczbą Fibonacciego.
Howard

1
Oto program do sprawdzania poprawności odpowiedzi (wklej kod do pola wprowadzania).
Justin

1
Czy można to zrobić nawet za mniej niż 55 znaków? Wymagane wyjście ma 14 znaków i nie mogę wymyślić języka, który mógłby używać liczb do wyświetlania znaków bez użycia co najmniej jednego znaku na znak.
Justin

2
@Plarsen zdecydowanie nie jest OK
John Dvorak

1
Okej, nie zmienię wtedy reguł :)
Plarsen

Odpowiedzi:


27

Wiersz polecenia systemu Windows - 34, 8 , 5 znaków, (2 poniżej)

* Te mogą łamać zasadę 2, ale tutaj tak jest

%~099

Nazwij plik:

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


Teraz pozwala trochę uszkodzić system plików - 2 znaki (lub mniej, jeśli chcesz)

A1

Nazwij plik (używając preferowanej niekonwencjonalnej metody):

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

Jak to działa:

Ponieważ skrypty cmd są wywoływane za pomocą polecenia „cmd.exe / C"% 1 "% * ', wykonane polecenie będzie:

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

który będzie w następującej kolejności:

  • Nie można wykonać polecenia „c: \ PATH_TO_THE_SCRIPT \”
  • Otwórz nowy druk powłoki Powitaj świat! \ N
  • Wyjdź z oryginalnej powłoki

2
Łał! Myślę, że wygraliśmy, jeśli zasady nie mówiły o braku wkładu. W każdym razie +1 dla myślenia nieszablonowego.
Plarsen

2
Kod golfa z Windows CMD ... +1. Można również argumentować, że „brak danych wejściowych” mógł oznaczać „brak odczytu STDIN”: P
Camilo Martin

1
To interesująca sztuczka również dla innych golfistów kodujących… napisz prawdziwy kod w nazwie pliku i użyj czegoś takiego jak eval $0<rolleyes>
Tobia

1
To niemożliwe!! 5 znaków? Naprawdę ciekawe podejście
Plarsen,

1
Właśnie opublikowałem poniżej rozwiązanie 2 char .
Tobia,

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Jest to wyrażenie MySQL, które ocenia Hello world!!!, zakładając, że sql_modeustawienie obejmuje PIPES_AS_CONCAT. Zawiera dokładnie 21 cyfr i 13 cyfr.

Niezależnie od tego, czy kwalifikuje się jako ważny wpis, pozostawiam go jury.

Przykład

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

5
Co do ... golfa wygrywającego CMD i SQL?
Camilo Martin

The selectI ;są prawdopodobnie częścią rachunku, ale nadal mądry rozwiązanie.
primo

@primo są, dlatego nie jestem pewien, czy to się kwalifikuje. Ale pomyślałem, że opublikuję to dla wesołości ;-)
Tobia


11

GolfScript, 55 znaków

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

Nie znalazłem sposobu na rozwiązanie 34 znaków, dlatego stworzyłem to.


10

Befunge 98 - 55

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

Postanowiłem to zrobić z nową linią, ponieważ nic nie kosztuje. Liczby są połączonymi wartościami sekwencji Fibonacciego.


8

Python 34-55

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

Tak. Marnuję je cyfry. Co zamierzasz z tym zrobić?


Kto wiedział, że pi ~ 3 będzie tak przydatne!
Kyle Kanos

1
Pytanie brzmi 21 nieliczbowych plus 34 liczbowych, twoja odpowiedź to 34 nienumeryczne plus 21 liczbowych.
user12205,

1
„witaj świecie” powinno być „Witaj świecie”; to jest wielkie litery h.
Justin

7

C (89 znaków)

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

Chociaż powyższe jest prawidłowe, niestety moje wysiłki w celu skompaktowania go za pomocą następującego programu nie są zgodne ze specyfikacją. Wydaje mi się, że warto na to spojrzeć i być może ktoś inny może go nieco skrócić (64 znaki, 37 cyfr, 27 liczb nienumerycznych). Aby go skompilować, musisz użyć clang i with -fms-extensions.

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

Literały złożone to nazwa tego, czego szukasz. Próbuję ich użyć, aby zmniejszyć liczbę znaków do 21 teraz!
charmlessCoin

Najniższa liczba nienumeryczna, jaką mogę osiągnąć, to 26, czyniąc iglobalną (pomijając int). Używanie longmoże oszczędzić przecinki, ale kosztuje więcej. 21 jest bardzo daleko.
ugoren

Tak, to dużo zmarnowanej przestrzeni. Używając tej małej sztuczki, mogę ją zdobyć, main(){puts((int[]){1819043144,1870078063,560229490,8481});}ale to wciąż 60 znaków. Gdybym mógł wyeliminować jeszcze kilka ... Edytuj: wow, więc globals nie muszą mieć deklaracji? Kto wiedział?
vmrob

@vmrob, globals muszą mieć deklarację. Ale domyślnie jest to typ int, więc a;jest równoważne z int a;.
ugoren

@ugoren Wiedziałem, że muszą mieć deklarację, po prostu nie zdawałem sobie sprawy, że domyślnie jest to int!
vmrob

6

Windows PowerShell (prawdopodobnie także Bash), 55

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

Nie mówiłeś nic o dostępie do sieci, więc oto brudne rozwiązanie. Mam drugi URL. Z kilkoma literami przy drugiej próbie. Niestety, to wciąż 21 cyfr, które wymagają 34 cyfr do wykorzystania lub zmarnowania.


Wiesz, że możesz edytować linki bit.ly, prawda?
Timtech

Co masz na myśli, edytuj? Poza tym nie dostałbym tego pod 13 literami.
John Dvorak

Możesz nacisnąć ołówek obok „Kopiuj” i edytować link. Jeśli to zrobisz, wszystkie stare wersje będą nadal działać.
Timtech

1
Skrócono do 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings,



5

Bash, 2 znaki

Bardzo dobrze, w mało prawdopodobnym przypadku odpowiedź Roberta nie jest dyskwalifikowana, oto moja:

$0

Nazwij plik echo Hello world!!!i uruchom go sh.


5

Pyton

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

cyfry: 55 nie cyfr: 34


Uwaga: rozwiązanie nie zawiera komentarzy. tylko kod.
Elizeusz

4

PHP (55 bajtów)

Ten program używa plików binarnych (wow, po raz trzeci używam tej samej sztuczki). 21 znaków nienumerycznych, 34 znaków numerycznych. Żadnych liter, bo litery są nudne.

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: Jestem prawie pewien, że przeczytałem „przed lub po”. No cóż, pozwól mi to naprawić.
Konrad Borowski

4

Mathematica 55

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

Wydajność

Hello World!!!

4

Sclipting (34 znaków)

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

Niestety Sclipting nie używa żadnych znaków ASCII, więc muszę uzupełnić program o 21 bezużytecznych znaków numerycznych :(


2

Forth or Ruby, 55

(34 numeryczny + 21 nienumeryczny)

Naprzód

." Hello world!!!" \ 3141592653589793238462643383279502

Rubin

puts"Hello world!!!"#3141592653589793238462643383279502

Używanie komentarzy do pad jest brudne, ale są to prawidłowe odpowiedzi.


2

J (55 znaków)

(34 numeryczny + 21 nienumeryczny)

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

0

C #, 233 bajtów

233 znaków
144 Numerycznych
89 znaków nienumerycznych

/*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));

Wyjścia:

Hello world!!!

0

Japt , 55 bajtów

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Wypróbuj online!

Jest to w zasadzie prosty świat cześć z pewnymi śmieciami na początku, który jest ignorowany, ale sprawia, że ​​kod spełnia warunki.


-1

Pakiet Windows

echo Hello World!!!::0123456789012345678901234567890123

12
Łał. To bardzo różni się od mojego rozwiązania sh.
user12205

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.