Pangramy
Szybki brązowy lis przeskoczył nad leniwym psem.
To jest przykład pangramu - zdania, które co najmniej raz zawiera każdą literę alfabetu.
Samo wyliczanie pangram jest zdanie, że spełnia kryteria być pangram przedstawiając analizę własnej liczby liter.
Przykładem tego jest zdanie
Ten pangram zawiera cztery As, jeden B, dwa Cs, jeden D, trzydzieści Es, sześć Fs, pięć Gs, siedem Hs, jedenaście Is, jeden J, jeden K, dwa Ls, dwa Ms, osiemnaście Ns, piętnaście Os, dwa Ps , jedno Q, pięć R, dwadzieścia siedem S, osiemnaście Ts, dwa Us, siedem V, osiem W, dwa X, trzy Y i jedno Z.
Wyzwanie
Utwórz funkcję, w której dane wejściowe są ciągiem prowadzącym do spisu liter. W tym przykładzie dane wejściowe to „Ten pangram zawiera”. Ilość każdej litery musi być w formie pisemnej i musi uwzględniać wyświetlaną liczbę liter.
Zasady
- Przecinek Oxford jest opcjonalny
- Użyj znaku ampersand przed Z (lub, w trybie twardym, włącz możliwość przełączania się między „&” i „i” w funkcji)
- Każda litera liczy się do całkowitej liczby liter
- Brak niepisanych liczb
- To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach
- W Hono u R małżonków w ten weekend, numery muszą być napisane w języku angielskim królowej. np.
nine hundred and ninety-nine Gs
dla 999 wystąpień litery G inine hundred and nine Gs
dla 909. - Rzędy wielkości należy zapisywać w standardowej konwencji nazewnictwa na małą skalę
Skrzynie na brzeg
- W niektórych przypadkach kod utknie w pętli - na przykład, jeśli są dwa systemy operacyjne, kod zwiększy liczenie do trzech systemów operacyjnych, co powoduje, że kod ponownie liczy dwa systemy operacyjne. Jeśli obliczenia każdy inny list, zanim wróci do tego nie można rozwiązać problemu, należy rozważyć wejście do być fałszywe rozrusznik i wyjście
false
,null
lub pusty ciąg. - Jeśli litera ma ponad 999 wystąpień, dane wejściowe należy uznać za fałszywy starter.
Przypadki testowe
- „Ten pangram zawiera” powinien wypisać przykładowe zdanie
źródło
o
-s bez słowa dla liczby, to kiedy go przeliterujesztwo
, cały łańcuch ma teraz trzyo
-s, co oznacza, że słowo jest teraz niepoprawne, przełączenie powoduje, że znowu jest niepoprawne itp.Rob enjoys any sentence with two As, two Bs, two Cs, one D, thirty five Es, four Fs, three Gs, nine Hs, eight Is, two Js, one K, two Ls, one M, twenty two Ns, eighteen Os, one P, one Q, nine Rs, twenty three Ss, twenty three Ts, three Us, four Vs, eleven Ws, one X, seven Ys, & one Z.
Odpowiedzi:
Python 2 , 615 bajtów
Wypróbuj online!
Funkcja
f
przyjmujep
jako przedrostek łańcucha; i zwraca krotkę liczby całkowitej reprezentującej liczbę wykonanych kroków oraz autogram.Funkcja
g
koduje liczbę1<=n<=999
w swoim angielskim ciągu; zajmuje 291 bajtów, mniej więcej połowę całkowitej liczby bajtów. Kodkoduje ciąg znaków
s
w (potencjalnie autogramem) pangramt
.Zapętlamy proces, mając nadzieję na sytuację, w której znajdziemy
t
taki, jakimt
jest autogram (tj. Gdziet==s
).Jeśliwchodząc w pętlę, losowo podważamy liczbę liter w sposób całkowicie ad hoc.W przypadku większości wartości
p
proces ten przekroczy limit czasu w TIO. Zazwyczaj miliony możliwości są sprawdzane przed znalezieniem „zwycięskiej” kombinacji.W ogóle nie mam żadnego dowodu, ale zgaduję, że: (a) oprócz wyczerpującego wyszukiwania brutalnej siły podobnego do tego, co autor tutaj opisał Lee Sallows i implementuje w sprzęcie (!), Ten rodzaj losowej heurystyki jest mniej więcej taki jak dobre, jak możesz; oraz (b) nie będzie rozwiązań wielu (większości?) początkowych fraz
p
.źródło
map(chr,range(65,91))
oszczędza niektóre bajty.