W tym wyzwaniu musisz rozwiązać to wyzwanie.
Konkurs się skończył! Sprawdź koniec pytania
Okular:
- Wpisz najmniejszy kod (dowolny język *).
- Wynik odpowiedzi jest sumą:
- Długość kodu bez spacji .
- Liczba odpowiedzi w tym samym języku do kwadratu.
- Długość nazwy największego języka w konkursie minus długość Twojego języka.
- Upvotes minus Upvotes (aka minus Suma głosów)
- Napisz pozycję użytkowników i wynik.
- Każdy użytkownik może napisać tylko jedną odpowiedź.
- Najniższy wynik wygrywa.
Testowanie:
Pod koniec konkursu możliwe dane wejściowe mogą być (STDIN):
Kolumny to: nazwa użytkownika, język, długość kodu (bez białych znaków) i TotalVotes
UserA Python 100 1
UserB Perl 30 2
UserC Java 500 3
UserD Brainfuck 499 4
UserE Perl 29 5
Jeśli w nazwie użytkownika znajdują się spacje, takie jak „Moja nazwa użytkownika”, zmieni się ona w „MyUserName”, więc dane wejściowe zawsze będą miały dokładnie 4 kolumny .
Wyjście będzie (STDOUT):
1 UserE 33
2 UserB 37
3 UserA 103
4 UserD 496
5 UserC 503
Wyjaśnienie:
User P N^2 L V
A 100 1 3 -1
B 30 4 5 -2
C 500 1 5 -3
D 499 1 0 -4
E 29 4 5 -5
Brainfuck to największa nazwa z 9 znakami ( 9 - 9 = 0
).
Perl i Java mają 4 znaki ( 9 - 4 = 5
).
Python ma 6 znaków ( 9 - 6 = 3
).
Perl ma 2 wpisy, więc każdy otrzymuje 4 dodatkowe punkty.
O językach:
Nazwa języka musi zawierać tylko litery angielskie (tj. [A-Za-z]), a te, które nie pasują, muszą zostać „przetłumaczone” na coś innego.
Do końca konkursu każdy język musi mieć swoją reprezentację (możesz zaproponować lepszą reprezentację)
Przykłady:
Python3 -> Python
Ruby1.9 -> Ruby
Shell Script -> Shell
C++ -> Cpp
C# -> CSharp
><> -> Fish
Termin: 20 sierpnia 2011 r. 00:00 UTC
Na koniec konkursu zwycięzca musi użyć swojego programu, aby znaleźć zwycięzcę. Osoby, które nie wygrywają, mogą korzystać ze swoich programów, aby znaleźć zwycięzcę, i powiedzieć mu, aby używał swojego programu do znalezienia zwycięzcy. :)
Zwycięzca (patrz wyżej) otrzymuje odpowiedź zaakceptowaną!
* Język Białej Przestrzeni ma tę niesprawiedliwą zaletę, że jest w stanie wprowadzić nieograniczoną złożoność bez kary za liczbę znaków. Odpowiedzi napisane w Whitespace mogą być w konkursie, ale nie mogą wygrać.
Jeśli potrafisz logikę swojego programu w białych znakach , nie możesz wygrać. To jest subiektywny temat, ale jeśli twój program może znacznie zwiększyć swój rozmiar bez ponoszenia kary, to spełnia ten warunek.
Ostateczne dane wejściowe
Alfabetyczna kolejność nazw (stan na 20 sierpnia 2011 r. UTC 00:00)
boothby Sage 41 9
Harpyon Python 203 4
JBernardo Python 184 7
JoeyAdams PostgreSQL 225 6
jpjacobs AWK 269 4
Lowjacker Ruby 146 2
PeterTaylor Golfscript 82 4
rmackenzie CommonLisp 542 2
shesek Javascript 243 3
userunknown Scala 252 1
Ponieważ zarówno moje, jak i odpowiedzi Boothby'ego nie mogą wygrać, zwycięzca powinien ogłosić się zwycięzcą, edytując to pytanie i zamieszczając poniżej końcowe wyniki.
Ostateczne wyjście
1 boothby 39
2 PeterTaylor 79
3 Lowjacker 151
4 JBernardo 185
5 Harpyon 207
6 JoeyAdams 220
7 shesek 241
8 userunknown 257
9 jpjacobs 273
10 rmackenzie 541
Odpowiedzi:
Golfscript, 83 znaki (82 nie licząc białych znaków)
Wyjaśnienie:
źródło
Sage:
484241 bez białych znaków (łącznie 60246 bajtów)Żeby być kutasem:
Zauważ, że pierwszy wiersz powinien być równoważny
s='\t'
, ale blok kodu SE tłumaczy tabulator na 4 spacje.Biała spacja rozpakowuje się do:
Zauważ, że moje użycie
[0..len(inputs)-1]
gwarantuje, że nie jest to skrypt w Pythonie, ponieważ Sage jest superpytonem *. Niestety, exec powraca do Pythona ... więc muszę go przygotować.edycja 1: dzielenie na zakładki, a nie na nowe wiersze - o czym myślałem? edycja 2: ułatwił kod dla oczu i ponownie przetworzył kartę podziału, przesuwając kolejną „nową linię” do białych znaków
* ok, niezupełnie: łamiemy Xor
źródło
Python, 184
Dlatego kocham spacje.
Jest o wiele bardziej czytelny!
źródło
PostgreSQL - 225 znaków spacji
242 → 225: Zastąpiono podzapytania klauzulami okienkowania .
testowany na wersji 9.2
Zastosowanie i wydajność:
źródło
Python 2 -
210203 znaków spacjiZastosowanie i wydajność:
źródło
x.split()
(to też usunie\n
)AWK,
277269 znaków spacjiSłuży
in
do cięcia 8 znaków.Wersja rozproszona i wersja z komentarzem:
stosowanie:
źródło
sed '/#/ d' meta.awk|sed ':a;$!N;s/\n//;ta;s/\s//g;'|wc -c
do liczenia znaków.Rubinowy, 146 znaków + 4 spacje
źródło
JavaScript, 243 znaki
Dłuższy niż większość innych rozwiązań ... ale najlepsze, co mogłem wymyślić w JavaScript.
Stosowanie
Dane wejściowe powinny znajdować się w zmiennej J. Na przykład otwórz konsolę i napisz:
CoffeScript, 177 znaków
O tej samej logice w CoffeScript:
źródło
length
atrybut za pomocą zmiennej i indeksów dolnych.Common Lisp - 546
(gdy chłopiec golfowy utrwala nawias, nie licząc spacji)
Mocno grałem w golfa, moje najczęstsze rozwiązanie seplenienia było i jest najdłuższe na planszy. Postanowiłem więc oszukać trochę, pisząc znacznie krótszy bootloader i twierdząc, że to moje przesłanie.
(Uważam oświadczenie @ Boothby za precedens na korzyść tego zachowania)Ogromne podziękowania dla Petera Taylora za jego pomoc w wyciskaniu każdego ostatniego chara z tego bootstrappera.
BASH - 35
Zastosowanie : cat ./test0 | bash ./btstrp.sh
Joey Adams wskazał, że nie jest to uczciwe rozwiązanie, ponieważ mogę „dowolnie zwiększyć złożoność twojego rozwiązania bez odpowiedniego zwiększenia rozmiaru kodu”, co nie zostało wyraźnie określone w specyfikacji.
źródło
$REPLY
. Spróbowaćwhile read x;do a=$x"\n"$a;done
. I powinieneś być w stanie usunąć spacje po|
s w ostatniej linii. Z drugiej strony nie jestem pewien, czy użycie wewnętrznego adresu IP jest bardzo przydatne: nie będzie działać dla nikogo innego.wget -q http://url/l.lsp ;cat - |clisp l.lsp
Scala
269 266252 bez spacji i znaków nowej linii.Wezwanie:
aktualizacje:
moje rozwiązanie:
*) poza konkursem
źródło
stdin
zamiastfromFile(System.in)
.