9-dołkowe minigolf: opis
- 9 (w większości dość łatwych) wyzwań golfowych o różnym stopniu trudności
- Kary za używanie tego samego języka więcej niż jeden raz
- Wszystkie wyzwania dotyczące określonego tematu (ten temat: manipulacja tekstem)
- Dane wejściowe i wyjściowe mogą być w dowolnym miejscu uzasadnione (tj. STDIN i STDOUT, odczyt z / zapis do pliku, argument funkcji i wartość zwracana itp.), Ale NIE mogą być zakodowane na stałe w programie
- Mocno zainspirowany 9-dołkowym wyzwaniem i mechaniką tekstową
Otwory
Torba golfowa
Weź dwa ciągi jako dane wejściowe.
Wypisuje liczbę znaków pierwszego łańcucha, ignorując jednocześnie wystąpienie dowolnego znaku w drugim ciągu.
Przykład:f("foobarbaz", "ao")
=>5
Pretekst do gry w golfa
Weź dwa ciągi jako dane wejściowe.
Wyprowadza pierwszy ciąg, z każdym wierszem poprzedzonym drugim.
Przykład:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Wojna między kartami a spacjami
Weź jako dane wejściowe ciągs
, liczbęn
i wartość logicznąb
(określaną dowolnie).
Jeślib
jest to prawda, dane wyjściowes
są przekształcane przy każdej tabulacji nan
spacje.
W przeciwnym razie wypiszs
z każdąn
spacją przekonwertowaną na tabulatory.
Przykład:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
oznacza spację)Filary golfa
Weź ciąg
s
, liczbęn
i inną liczbęm
jako dane wejściowe.
Dane wyjściowes
w kolumnachn
wierszy każdy im
znaki w kolumnie.
Wypełnij również jedną spację między kolumnami.
Przykład:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Przyjazne litery
Weź ciągs
i liczbęn
jako dane wejściowe.
Wypisuj najczęstszą grupęn
liter ws
.
Jeśli jest remis, wypisz jeden lub wszystkie z nich.
Przykład:f("abcdeabcfghiabc", 3)
=>"abc"
Jajecznica
Weź ciąg jako dane wejściowe.jajkalitery na śniadanie
Wypisuje ciąg ze wszystkimi słowami zaszyfrowanymi (kolejność liter losowo), z wyjątkiem pierwszych i ostatnich liter.
Dla uproszczenia załóżmy, że wejście będzie listą „słowa”, oddzielone spacjami (tzn. In@$&_():;" foo bar
,@$&_():;"
jest uważane za „słowo”).
Przykład:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIIfy
Weź ciąg jako dane wejściowe.
Jeśli ciąg zawiera tylko cyfry i spacje, zastąp je odpowiednimi znakami ASCII (usuwając spacje).
W przeciwnym razie wykonaj odwrotność (od znaków do cyfr).
Przykład:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Przykład 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Transformacja mini-mini-markdown
Weź ciąg jako dane wejściowe.
Wyprowadza ciąg znaków przekonwertowany za pomocą mini-markdown, jak zastosowano w komentarzach na Stack Exchange.
Jest to jeszcze wersja mini-er: trzeba tylko poradzić**bold**
,*italics*
i`code`
.
Nie musisz obsługiwać nieprawidłowego zagnieżdżania, np**foo *bar** baz*
. Załóż również, że gdy zobaczysz ogranicznik (*
lub`
), zawsze będzie oznaczać formatowanie (tj.te**st**ing
=>te<b>st</b>ing
Ifoo* bar *baz
=>foo<i> bar </i>baz
).
Przykład:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Tylko najlepsze postacie
Weź ciągs
, liczbęn
i ciągr
jako dane wejściowe.
Wypiszn
th znak każdego słowa ws
. (Indeksowane 0, słowa są rozdzielane spacjami).
Jeśli długość słowa jest mniejsza niżn
, użyjr
zamiast niego tego słowa.
Przykład:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Punktacja
Twój wynik to suma liczby znaków w twoich programach. Dla każdego powtarzanego języka pomnóż przez 110%. Na przykład, jeśli masz trzy rozwiązania Ruby, a całkowita liczba znaków wszystkich twoich rozwiązań wynosi 1000, twój wynik to 1000 * 1,1 * 1,1 = 1210. Zaokrąglij w dół, jeśli masz wynik nie będący liczbą całkowitą.
Powodzenia!
code-challenge
string
multiple-holes
Klamka
źródło
źródło
_
nie ma znaczenia, ponieważ zdecydowałem się go nie uwzględniać. Zredagowałem, aby wyjaśnić niektóre inne.**foo***bar**baz*
?Odpowiedzi:
Wynik: 382 * 1,1 2 = 462
Języki podatne na zmiany.
1. APL,
84Dzięki @marinus za zgolenie 4 znaków.
Wywoływany z łańcuchami jako lewy i prawy argument, np.
2. Ruby,
3531Dzięki @DoorknobofSnow za golenie 4 znaków.
3. Python, 48
4. GolfScript, 20
Zakłada, że argumenty są na stosie. Przetestuj online
5. J, 50
Wywoływany z ciągiem jako lewym argumentem i liczbą jako prawym, np.
6. Ruby, 61
7. GolfScript,
393534Ponownie zakładamy, że argument znajduje się na stosie. Przetestuj online
8. Perl, 98
9. Haskell, 36
źródło
f=->s,r{...}
) zamiast funkcji. Odmawiam jednak głosowania, dopóki się nie zakończy: PPython - 697 × 1,1 9 ≈ 1644
Rany, na pewno kocham lambdas.
Uwaga : 3 i 5 zostały bezwstydnie skopiowane z odpowiedzi Zmienności , ponieważ nie mogłem znaleźć lepszej alternatywy. Zrobiono to również dla zabawy .
EDYCJA : Dzięki zmienności dla wskazówek.
źródło
int
, ponieważ booleany są ich podklasą, a dla 7.all([...])
można skrócić dox.replace(' ','').isdigit()
a
.Wynik 513 * 1,1 5 = 826
Służyło to pokonanie karą w tym samym języku. Rozwiązałem większość z nich w Ruby, aby ukończyć je jak najszybciej. Może później zmienić niektóre języki. Dodano małe podsumowanie / wyjaśnienie dla każdej odpowiedzi.
1: Python (46)
Po pierwsze, krótsza odpowiedź w Ruby 2.0 (30), która daje więcej kar i wyższy ogólny wynik:
2: Ruby 1.9+ (37)
Zwraca każdą linię z
s
prefiksemt
:3: Ruby 1.9+ (48)
Zwraca
s
z tabulatorami zastąpionymin
spacjami lub odwrotnie, w zależności odb
:4: Ruby 1.9+ (95)
Ktoś mnie zastrzelił.
5: Rubinowy 1.9+ (58)
Zwraca najczęstszy ciąg
n
znaków ws
:6: J (47)
Jakoś szyfruje tekst; Bezwstydnie skradziony dosłownie marinus :
7: Rubinowy (57 + 1)
Wyświetla wejście ASCIIfied lub de-ASCIIfied. Uruchom z
-p
przełącznikiem.8: Sed (87)
Wyświetla dane wejściowe przekonwertowane z (mini) markdown na HTML:
9 Rubinowy 1.9+ (37)
Zwraca ciąg
n
th znaków każdego pierwszego słowa ws
lubr
:źródło
<b>test** **test2</b>
dla**test** **test2**
?**foo *bar* baz**
?-
operatora ruby działa z enumeratorem?Praca w toku
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5
6.
7. Befunge 98 - 9
8
9
źródło
for(char c:b.toCharArray())
ireplace(c+"","");
ireturn s.length();
(lub coś podobnego), aby to działało.