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.