Napisz program, który definiuje funkcję, która może sprawdzić, czy zmienna łańcuchowa o nazwie „cokolwiek chcesz lub wprowadzona przez użytkownika” jest piem. (piem = historia lub wiersz, w których długości wyrazów przedstawiają cyfry π ( z Wikipedii ))
Kilka przykładów:
myfunction("I am clearly wrong") # False
myfunction("How I want a drink, alcoholic of course, after the heavy lectures involving quantum mechanics") #True (Taken from Wikipedia)
myfunction("Law ' s fine") # True
Przed przetwarzaniem powinieneś usunąć każdą interpunkcję lub znak nowej linii. Golf z czystym kodem, najkrótsze wygrane
Data zakończenia: wieczór 01.10.2014
Różne odpowiedzi
- Ile cyfr musimy obsłużyć? Więcej niż 10
- Co ciekawe, jak należy interpretować zero w PI? Pominięte lub 10 literowe słowa? Jako 10 liter słów
- „zmienna o nazwie piem” - więc nazwa parametru musi być piem? Nie, nie ma, poprawiono tekst pytania
- Zabawny bonus może być rozwiązaniem, które samo w sobie jest piemem. Jeśli twoje rozwiązanie to piema, otrzymasz * 0,5 premii
- Dla argumentu, czy _ zawsze jest interpunkcją? Możesz zdecydować, czy to interpunkcja, czy nie
- Nie jest jasne, co należy rozumieć przez „jakąkolwiek interpunkcję”, mam na myśli. ”„?! ;;;)
- Więc cyfry powinny być liczone? A grzywna Law byłaby fałszywa? Cyfry należy traktować jak litery, grzywna Law = False; Prawo jest w porządku = Prawda
Komentarze
- Rozwiązanie APL należy liczyć w bajtach
- Jeśli twoje rozwiązanie działa na ponad 100 cyfrach pi, otrzymasz * 0,8 premii
- Ze względu na duże zainteresowanie terminem końcowym jest jeszcze jeden dzień w przyszłości.
piem
? To sprawia, że wszystkie aktualne odpowiedzi są nieprawidłowe.Odpowiedzi:
APL (39)
Wykorzystuje wszystkie cyfry, jakie zapewnia stała pi interpretera APL, do limitu 99. W moim przypadku (Dyalog APL 14 32-bit) było to 16 cyfr. Wersja 64-bitowa prawdopodobnie ma więcej cyfr. Jednak 16 cyfr wystarcza, aby podane przykłady działały.
Ciągi zawierające więcej niż tę liczbę słów nie będą działać , nawet jeśli wszystkie cyfry, które można sprawdzić, będą prawdziwe. (To samo dotyczy innych postów, jak w tym piśmie.) Na przykład, gdyby było tylko 10 cyfr, to „Jak chcę drinka” nie powiedzie się. Można to naprawić, ale kosztem 14 znaków:
Ta wersja zaakceptuje każdy ciąg, w którym pierwsze N cyfr jest poprawnych.
źródło
JavaScript
(169) (140) (137) (135)(63) dla 17 cyfr piW mojej wersji
Law's fine
iLaw ' s fine
zwróć oba prawdziwe.Najnowsza wersja (63) autorstwa Ingo Bürk i hsl
Nowa wersja (135) dla 17 cyfr pi (Dzięki Ingo Bürk):
Stara wersja (169) dla 32 cyfr pi:
źródło
1e15*Math.PI+"2384626433832795"
for
Pętli nie można dodać w ten sposób.r=0
a następnie zapętlanier+=s[a].length!=p[a]
(możesz;
na końcu pominąć ). Następnie wróć!r
.Rubin,
11310179 (98 * 0,8)Wyjaśnienie
String
.999
miejsc po przecinku i zamieniane na ciąg znaków po.
usunięciu."Let's"
jest liczony jako dwa słowa:"Let"
i"s"
.Array#map
aby przekonwertować każde słowo na jego rozmiar, połączyć je w plikString
.String
s zaczynają się od tych samych znaków.Złożyłem bonus za obsługę ponad 100 cyfr.
_
w tym rozwiązaniu nie jest traktowane jako interpunkcja.źródło
_
jako interpunkcji._
zawsze jest interpunkcja? Co ze zdaniami takimi jakMy nickname on Stack Overflow is britishtea_500
.Mathematica, 123 bajty * 0,8 = 98,4
Prawie najdłuższe jak dotąd zgłoszenie, ale:
źródło
Python -
130 127116 - 17 cyfr liczby piJak w odpowiedzi @flawr „s ,
Law ' s fine
aLaw's fine
zarówno return true.Dzięki @Emil za usunięcie 12 znaków z programu.
źródło
l
w zmiennej i definiując funkcję za pomocą lambda.Java, 185
źródło
python 3, 17 cyfr pi, 104
źródło
;
nowym znakiem czytelności. Ponadto można usunąć wiele spacji.Python 3 - 129
Nie uwzględnia interpunkcji:
źródło
T-SQL
488383A teraz duże rozwiązanie T-SQL :)
Tworzy to wbudowaną funkcję cenioną w tabeli, która wykorzystuje rekurencyjne CTE do wykrywania granic słów.Tworzy funkcję skalarną, która przeżuwa słowa i PI do 31 miejsc po przecinku (pierwsze 0). Nazywa się to w następujący sposób
źródło
CJam, 40
Nie jest jasne, co należy rozumieć przez „każdy rodzaj interpunkcji”; to rozwiązanie usuwa
,.'"?!;;
znaki.źródło
Narzędzia Bash i Unix, 111
źródło
NodeJS 32 cyfry 230 bajtów
Nie mogę tego skrócić z JS: D
źródło