9-dołkowe wyzwanie
- 9 kodów golfowych o różnym stopniu trudności.
- Kary za używanie tego samego języka więcej niż jeden raz.
Pytanie zostanie zaktualizowane o parów, mistrzów dołków i zwycięzców trofeów.
Wynika to z konkursu, który prowadziłem z przyjaciółmi, nie jest to zwykły format, ale mam nadzieję, że niektórzy z was docenią jego odmienność. Wyzwania, zasady i trofea poniżej.
Dziury
Greenway (24)
f(c:string, n:integer)
Drukuje wiersz zawierającyn
wystąpieniac
.Somewhere in the Rough (73)
f(t:string, s:string, n:integer) -> i
Gdziei
jest indeksnth
instancjis
wt
.Curry na obiad (6235)
f(x:function, y: function) -> g
Gdzieg
jest funkcja, która zadzwoniy
,n
czasy; gdzien
jest wartość zwracana zx
Wypluwa (92)
f(p:string)
Zapisuje do plikup
i wypełnia go losowym prostokątem losowych znaków (ascii).Poszukiwanie skarbów (75)
f(p:string, c:char) -> (x, y)
Czyta plik wp
którym opisujemy siatkę symboli i zwracax
iy
współrzędne pierwszej instancji tego symbolu w siatce, załóżmy, że istnieje.Most na rzece Kwai (179)
f(l:list[int])
Wyświetla diagram mostków różnic dlal
. Np. Dla[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Upewnij się, że spacje są tworzone zgodnie z rozmiarem liczby powyżej. W przypadku trzycyfrowej liczby potrzebne będą 4 spacje między cyframi w wierszu poniżej.
Złap: Gdzieś, twój kod musi przeliterować spodnie (Musi mieć co najmniej 1 niealfanumeryczne ograniczniki. Np.
tr(ou,se)(rs)
Czas płynie, gdy grasz w golfa (1157)
f(p:string) -> [h, m]
Odczytuje plik, wp
którym znajduje się reprezentacja ASCII zegara analogowego, gdzie wskazówka godzinowa jest reprezentowana przez jedną linię, a minuty przez dwa. Wydrukuj listę zawierającą dwa elementy: godziny i minuty pokazane na zegarze. Jeśli widoczna jest tylko jedna ręka, załóż obie wskazują na tę pozycję.Oto wszystkie możliwe kombinacje ręki.
\ | / \|/ --o-- /|\ / | \
Pozycje te wynoszą odpowiednio (12, 1, 3, 5, 6, 7, 9, 11). Załóżmy, że inne znaki na tarczy zegara to spacje.
Drzewny! ()
f(p:string) -> b:boolean
Gdzie p jest ścieżką do pliku z wbudowanym ascii. Bloki z białą spacją pod nimi spadną. (Z wyjątkiem ukośników, które pozostają na miejscu, jeśli jest stabilny blok w kierunku przeciwnym do kierunku, w którym są zwrócone). Jeśli budynek jest strukturalnie zintegrowany, zwróć wartość true, w przeciwnym razie zwróć wartość false. Wszystkie bloki niebiałe są liczone jako stałe i inne niż ukośniki, wszystkie spadają.Strukturalnie bezpieczny
____ |/\| | |
Nie jest bezpieczne
|__ | |
Bezpieczna wersja
|__ \\| |
Wiadomości Slacker (218)
f(s:string, r:string, p:string)
Pobiera tytuły z 20 najlepszych artykułów w Hacker News i zmienia wszystkie wystąpienias
nar
, a następnie zapisuje nowe tytuły w pliku HTML w miejscup
, w którym każdy tytuł jest zawarty w elemencie h1.Plik wyjściowy powinien być mniej więcej taki
<h1>Some title</h1></h1>Some other title</h1>...etc
Połów :
- Nie można używać interfejsu API HN.
- Nie możesz używać Regex.
- Nie wolno używać nawiasów klamrowych w dowolnym miejscu w kodzie.
Punktacja
- Liczba znaków to długość funkcji, która poprawnie się skompiluje i uruchomi. Jednak nadal musisz przesłać pełny kod, w tym import.
- + 10% za każdy powtórzony język w zgłoszeniu. (Np. Jeśli użyjesz Ruby do 3 rozwiązań, twój końcowy wynik zostanie pomnożony przez 1,2). Różne wersje tego samego języka są nadal liczone jako ten sam język.
- Par będzie średnią oceną dla każdego dołka.
- Prześlij swoje rozwiązania w jednej odpowiedzi.
- Ogólny wynik to liczba postaci + kara językowa, a następnie zaokrąglona w górę.
Trofea
- Złota kurtka - ( @Sprigyig - 1290) Najniższy ogólny wynik
- Shooter - ( @Sprigyig - 9) Większość używanych języków
- Bunkier - najwięcej powyżej wartości nominalnej na dowolnym dołku
- Snakes on a Plane - ( @AsksAnyway - 1727) Najwyższe ułożenie znaków w pythonie w jednym rozwiązaniu
- Dobre części - ( @AsksAnyway - 255) Najwyższa liczba znaków JS w jednym rozwiązaniu
- Shakey Steve - Najkrótsze rozwiązanie wykorzystujące interfejsy
- Nie jesteś tu z rundy - najkrótsze unikalne rozwiązanie językowe, którym język ma najkrótszą stronę wikipedii.
- Happy Gilmoore - ( @AsksAnyway - 31) Najkrótsze rozwiązanie ze słowem „aligator” w kodzie.
- Unicycling Dwarf Magic - Domyślne rozszerzenia 9 plików źródłowych przesyłania są doskonałym anagramem słowa w Słowniku Oxford.
Trofeum kwalifikuje się dopiero po ukończeniu wszystkich 9 dołków
Zgłoszenia
- @Sprigyig 1290
- @Firefly 1320
- @grc 1395
- @Trevor M 1465
- @C Gearhart 1654
- @Guy Sirton 1719
- @AsksAnyway 4651
źródło
<
&>
/
stanowisko odnosiło się do godziny pierwszej lub drugiej? (i podobnie dla wszystkich pozostałych przekątnych)Odpowiedzi:
Wynik: 4651
2907 + 60% kary
1. GolfScript - 14 znaków
Zastosowanie:
c n a
np."test" 3 a
->testtesttest
Szczęśliwy Gilmoore
2. Python - 72 znaki
3. JavaScript - 255 znaków
Bunker Good Parts
4. Python - 132 znaki
5. Python - 89 znaków
6. Python - 189 znaków
7. Python - 1727 znaków
Węże w samolocie
8. Python - 226 znaków
9. Python - 203 znaki
źródło
i<i<42
), czy są one dozwolone, o ile używasz ich tylko jako operatorów?Wynik: 1320
Mam wiele do zrobienia, aby poprawić ten wynik ... No cóż, przynajmniej uniknąłem kar za powtarzające się języki. :-)
1. Python (21 znaków)
„Oczywiste” rozwiązanie.
2. ECMAScript 6 (47 znaków)
Znajduje indeks w nieco niekonwencjonalny sposób, licząc długość podłańcucha przed nim.
3. J (12 znaków)
Wbudowana koniunkcja
^:
podnosi funkcję do potęgi (tj. Powtarza funkcję określoną liczbę razy). Oznacza to, żef^:3 y = f (f (f y)))
. Jednak jest przeciążony, ponieważ alos akceptuje funkcje zamiast liczb całkowitych, w którym to przypadku uruchamia funkcję na wejściu, aby uzyskać liczbę powtórzeń. Niestety musimy odwrócić operandy dla zadania, w przeciwnym razie otrzymalibyśmy odpowiedź sumieniaf=:^:
.4. C (95 znaków)
To zadanie pozostawia sporo miejsca na interpretację i nadużycia: czy dobrze jest po prostu wypisać losowy znak ASCII do wydrukowania i powiedzieć, że jest to losowo zwymiarowany prostokąt o wymiarach z zestawu {1}? Prawdopodobnie nie. W każdym razie poszedłem z prostym,
rand()
ale w rzeczywistości prawdopodobnie chcesz dodać%9
lub coś, jeśli chcesz to przetestować. Na moim Linux-ie nie musiałem opróżniać pliku, aby go zapisać (myślę, że opróżnia się automatycznie po wyjściu z programu), ale jestem pewien, że musisz go opróżnić, aby był zgodny ze standardami, więc poczuj do dodaniafflush(f);
do liczby tutaj.5. Haskell (100 znaków)
Podoba mi się powtarzający się wzorzec między znalezieniem wiersza i kolumny (wyodrębniony przez
h
).6. Lua (261 znaków)
Wykorzystuje wiele wartości zwracanych i rekurencję do obliczania różnic. Kosztowało mnie kilka znaków, aby dokładnie dopasować wynik wyjściowy próbki (dodając wszędzie odpowiednią ilość spacji).
7. Go (307 znaków)
Prawdopodobnie można by grać w golfa o wiele więcej; Ledwo znam Go.
8. CoffeeScript (+ node.js) (223 znaków)
Trochę taniego strzału, ponieważ mam już JS. No cóż. Zwraca wartość fałszu (mianowicie
undefined
) lub wartość prawdy (mianowicie1
), aby wskazać odpowiedź.9. Bash (254 znaków)
(Dodano nowe linie po rurach dla zwiększenia czytelności). Obejście ograniczeń z powłoką było fajne. Zdaję sobie sprawę, że jest prawdopodobnie lepszy sposób
$2,$4,$6,...
, ale i tak to wymyśliłem.źródło
f=str.__mul__
Wynik: 1 394,4
996 znaków + 40% kary
1. Greenway - Haskell, 19 znaków
Stosowanie:
2. Szorstki - PHP, 72 znaki
3. Curry - JavaScript 1.8, 45 znaków
4. Spew - J, 43 znaki
Stosowanie:
5. Skarb - J, 64 znaki
Stosowanie:
6. Bridge - Python, 166 znaków
7. Czas - Python, 205 znaków
Zakłada, że linie są wypełnione spacją, aby mieć szerokość pięciu znaków. Używa zakładek dla drugiego poziomu wcięcia.
8. Drewno - Python, 190 znaków
9. Slacker - Python, 192 znaki
Dzięki Tyzoid za pomysł skracania adresów URL.
źródło
Edycja: Myślę, że prześlę to tak, jak jest: łącznie 1290, bez powtarzania języka.
Greenway, C # 53
Postanowiłem zamienić języki na numery 1 i 9. Całkowicie warte 30 tutaj za setki później.
Gdzieś w trudnych warunkach, Python 59
Naprawdę nie powinienem był używać tak dobrego języka na łatwy problem. Ponadto, jak to nie jest częścią rodziny indeksów funkcji języka? Wydaje mi się, że zawsze potrzebuję tego ...
Curry For Dinner, Lisp 61
Nie dotknąłem seplenienia od tamtego tygodnia na studiach ...
Spew, narzędzia Bash / shell 102
Moje bash-foo nigdy nie było tak dobre na początek. Zajmę się tym później. BTW, jeśli chcesz, aby skończył się szybciej, przełącz go na / dev / urandom.
Poszukiwanie skarbów, C 113
Prawdopodobnie jeden z bardziej przyjaznych problemów C. Zinterpretowałem „zwracaj dwie liczby całkowite” jako argument tablicy zwracającej jako argument. Ostrzeżenia? Jakie ostrzeżenia Int * jest tak samo dobry jak PLIK * = p.
Most na rzece Kwai, Perl 207
Zacząłem uczyć się perla podczas pisania tego. (Lepiej późno niż nigdy!) Doszedłem do tego, chcąc robić wyrażenia regularne, więc tworzę ciąg jako obie warstwy mostu razem, a następnie używam wyrażeń regularnych z zamianą spacji, aby utworzyć dwie różne linie.
Czas płynie, gdy grasz w golfa, Java 297
Możesz tylko tyle zrobić, aby java terse ... Zakłada się, że zegar jest wypełniony spacją, więc każda linia ma długość 5 spacji.
Drzewny! JavaScript 201
Działa w konsoli Chrome. Nie udzielam żadnych gwarancji w innym miejscu = str. Wymaga to uzupełnienia linii do długości najdłuższej linii. Wydaje mi się, że jest to uzasadniona prośba o sztukę ASCII.
Wiadomości Slacker, Ruby 197
źródło
Baw się dobrze dotykając kilku języków przez chwilę ...
Liczba znaków uzyskana po usunięciu niepotrzebnych spacji / znaków nowej linii, ale składanie jest w większości czytelne. Ponieważ pytanie jest mieszanką funkcji i programów, w razie potrzeby zawarłem tylko część funkcji ... Również pewną swobodę przyjąłem, co znaczy „powrót” ...
Razem ~ 1719
1- Python (~ 20)
2- C (~ 109)
Wersja do odczytu:
3- JavaScript (~ 56)
4- Rexx (~ 136)
5- Scala (~ 290)
6- C ++ (~ 355)
7- Go (~ 301)
Uwaga: wymaga to wypełnienia zegara (tj. Wszystkie linie mają tę samą długość).
8- Rubinowy (~ 259)
9- hack bash / Unix (~ 193)
źródło
Nie do gry w golfa, ale tutaj jest trochę Tcl, ponieważ język potrzebuje więcej miłości:
Przeważnie nieprzetestowane, ponieważ napisanie tych procesów w pół godziny jest o wiele bardziej interesujące niż próba poprawnego zaprojektowania kodu golfowego. Cieszyć się!
źródło
Miałem tylko czas na pracę nad 1/2 z nich. Wydaje się, że chcesz je w postaci funkcji, a nie jednej linijki. Wszystkie są funkcjami. Kod testowy pod funkcją. W Perlu.
Zielona Droga:
Szorstki:
Curry:
Rzygać:
Skarb:
Jutro będę pracować 6-9.
źródło
WIP Uwaga, liczba znaków może być wyłączona z powodu
'\n'
iwc
[1 Greenway] Mindf * ck, 54 znaków
Sposób użycia: Po napisaniu kodu wprowadź swój ciąg i zakończ go za pomocą ^ a (ctr + a), a następnie natychmiast po nim wprowadź swój numer.
Jedno zastrzeżenie: podana liczba musi wynosić od 0 do 9 (jeśli chcesz większy, wartość ascii-48 dowolnego wprowadzonego znaku zostanie użyta jako
n
)Zrzut ekranu:
[3 Curry for Dinner] JavaScript, 59 znaków
[4 Spew] BASH, 56 znaków
[7 Czas leci, gdy grasz w golfa] C, 334 znaków (412 z definicją makr)
Uwaga: ta funkcja zwraca wskaźnik do dwuwymiarowej tablicy liczb całkowitych, sformatowanej w następujący sposób: {3, 55} (dla pozycji zegara godziny 3, minuty 11)
[9 Slacker News] PHP, 246 znaków
Oddzielna / oryginalna implementacja w BASH + AWK, 218 znaków
źródło
1654
1. Greenway (Haskell - 37)
2. Somewhere in the Rough (Mathematica - 43)
3. Curry na obiad (Lisp - 58)
4. Spew (Matlab / Octave - 83)
5. Poszukiwanie skarbu (C - 176)
6. Most na rzece Kwai (Ruby - 192)
7. Czas płynie, gdy grasz w golfa (Node.js - 406)
8. Drewno! (Idź - 329)
9. Wiadomości Slackera (Python - 330)
źródło
Jestem oszustem i nie grałem jeszcze we wszystkich 9 dołkach… jeszcze . Niemniej jednak, oto moja dziura 8, rozwiązanie „Timber” w Perlu (149 znaków).
Jeden z moich współpracowników uznał to za wyzwanie w pracy. Dobrze się z tym bawimy, szczególnie ja, ponieważ mam jak dotąd najniższe rozwiązanie!
Nasze zasady były takie, że musiał to być samodzielny skrypt, który wypisał
true
lubfalse
następował po nim nowy wierszSTDOUT
i że żaden „shebang” nie był w porządku.Poniżej znajduje się „zminimalizowane” rozwiązanie. Podaję też „ sedno ” tego samego, które zawiera nie „zminimalizowany” kod i (często torturalnie długie) wyjaśnienia uzasadnienia mojego podejścia.
źródło
Jestem zbyt leniwy, aby modyfikować go zgodnie z zasadami konkursu Meh, ale działa dobrze ...
źródło
Pierwszy kod golfa! (Wciąż trwają prace ...)
1. Greenway
Język: Python 3.2.3
Rozmiar pliku: 23 bajty
Kod:
3. Curry na obiad
Język: Python 3.2.3
Rozmiar pliku: 64 bajty
Kod:
źródło
Kolejna praca w toku, a ja jestem w pracy, więc wrócę później.
Greenway w Ruby (14 znaków, 24 z #alligator ), zadzwoń z
f.(c, n)
Zrzut ekranu
Somewhere in the Rough in CoffeeScript (38 znaków)
Zrzut ekranu
Curry na kolację w JavaScript (54 znaki)
Zrzut ekranu
Spew w PHP (111 znaków)
Wymaga
short_open_tag
to włączenia w pliku konfiguracyjnym PHP. W przeciwnym razie powinien być ogranicznik otwarcia<?php
,@
symbole służą do wyciszeniaPHP_NOTICE
błędów, które są generowane w celu uniknięcia ujęciarand
w cudzysłów i nie jawnego deklarowania$s
zmiennej. To wygeneruje kwadratową siatkę znaków ascii od 4 do 30 znaków na obu osiach.Zrzut ekranu
źródło
1. Greenway (Python 2: 20)
Przykładowe dane wejściowe:
a("asdf",3)
-> string (asdfasdfasdf
)2. Somewhere in the Rough (Python 2: 47)
Przykładowe dane wejściowe:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Curry for Dinner (Javascript: 61)
Przykładowe dane wejściowe:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> logujestring(1)
się do konsoli ... 3 razy.Zgodnie ze specyfikacją
c
zwraca funkcję i tak naprawdę nie wykonuje samej funkcji.4. Spew (C ++ 11: 171)
Nie testowałem tego, ale powinno działać.
źródło
Niektóre wcięcia pozostały nietknięte dla czytelności, ale zostały usunięte podczas liczenia znaków. Suma wynosi około
1227. Albo nie, zapomniałem problemu.14861465 znaków.1. MIPS ASM (55 znaków)
2. Schemat (52 znaki)
3. F # (39 znaków)
4. PowerShell (133 znaki)
5. C ++ (
184152 znaków)6. C # (
291282 znaków)7. Haskell (
318306 znaków)Szukałem wymówki, by wypróbować Haskella. Myślałem, że jestem sprytny, generując listę pozycji za pomocą kombinacji liczb, ale biorąc pod uwagę liczbę znaków, których potrzebowałem, mogłem zakodować tę cholerną rzecz. No cóż. Kod jest okropny, ale pisanie i tak było fajne.
edit: Naprawiono, więc poprawnie zwraca minuty.
8. Lua (259 znaków)
Byłem zaskoczony, gdy zauważyłem, że łańcuchy nie obsługują indeksowania stylu tablicy, więc musiałem polegać na sub.
9. Python (187 znaków)
Dzięki grc / Tyroid dla skracacza adresów URL.
źródło