Schreiben Sie ein Programm, das eine Funktion definiert, die prüfen kann, ob eine Zeichenfolgenvariable mit dem Namen "Alles, was Sie wollen oder vom Benutzer eingegeben werden" ein Piem ist oder nicht. (piem = eine Geschichte oder ein Gedicht, in dem die Wortlängen die Ziffern von π darstellen ( aus Wikipedia ))
Einige Beispiele:
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
Sie sollten jede Art von Interpunktion oder Zeilenumbruch vor der Verarbeitung löschen. Pure Code Golf, der kürzeste gewinnt
Enddatum: Abend des 10.01.2014
Verschiedene Antworten
- Wie viele Ziffern müssen wir verarbeiten? Mehr als 10
- Wie sind 0 in PI zu interpretieren? Übersprungene Wörter oder Wörter mit 10 Buchstaben? Als 10 Buchstaben Wörter
- "eine Variable namens piem" - also muss der Name des Parameters piem sein? Nein, der Fragetext wurde nicht korrigiert
- Ein Spaßbonus kann eine Lösung sein, die selbst ein Piem ist. Wenn Ihre Lösung ein Piem ist, erhalten Sie einen Bonus von * 0,5
- Ist _ aus Gründen der Argumentation immer Interpunktion? Sie können entscheiden, ob es sich um Interpunktion handelt oder nicht
- Es ist unklar, was unter "irgendeiner Art von Interpunktion" zu verstehen ist. '"?! ;; ()
- Also sollten Ziffern gezählt werden? Und Laws Geldstrafe wäre falsch? Ziffern sollten als Buchstaben behandelt werden, Law's fine = False; Das Gesetz ist in Ordnung = wahr
Bemerkungen
- Die APL-Lösung sollte in Bytes gezählt werden
- Wenn Ihre Lösung für mehr als 100 Stellen pi funktioniert, erhalten Sie einen Bonus von * 0,8
- Aufgrund des großen Interesses liegt das Enddatum noch einen Tag in der Zukunft.
piem
? Das macht alle aktuellen Antworten falsch.Antworten:
APL (39)
Es werden alle Ziffern verwendet, die die pi-Konstante des APL-Interpreters liefert, bis zu einer Grenze von 99. In meinem Fall (Dyalog APL 14 32-Bit) waren das 16 Ziffern. Die 64-Bit-Version hat wahrscheinlich mehr Ziffern. 16 Ziffern reichen jedoch aus, damit die angegebenen Beispiele funktionieren.
Zeichenfolgen mit mehr als dieser Anzahl von Wörtern schlagen fehl , selbst wenn alle zu überprüfenden Ziffern wahr sind. (Dasselbe gilt für andere Posts zum Zeitpunkt dieses Schreibens.) Wenn beispielsweise nur 10 Ziffern vorhanden wären, würde die Meldung "Wie ich etwas trinken möchte" fehlschlagen. Dies kann behoben werden, jedoch auf Kosten von 14 Zeichen:
Diese Version akzeptiert alle Zeichenfolgen, bei denen die ersten N Ziffern korrekt sind.
quelle
JavaScript
(169) (140) (137) (135)(63) für 17 Stellen piIn meiner Version
Law's fine
undLaw ' s fine
beide wahr zurückgeben.Neueste Version (63) von Ingo Bürk und hsl
Neue Version (135) für 17 Stellen von pi (Dank an Ingo Bürk):
Alte Version (169) für 32 Stellen von pi:
quelle
1e15*Math.PI+"2384626433832795"
for
Schleife kann auf diese Weise nicht hinzugefügt werden.r=0
und dann einfach zu durchlaufenr+=s[a].length!=p[a]
(Sie können das;
am Ende weglassen ). Dann kehre zurück!r
.Ruby,
11310179 (98 * 0,8)Erläuterung
String
.999
Dezimalstellen berechnet und mit.
entferntem Wert in einen String umgewandelt ."Let's"
wird als zwei Wörter gezählt:"Let"
und"s"
.Array#map
diese Option , um jedes Wort in die Größe des Wortes umzuwandeln und in ein Wort zu verkettenString
.String
s mit denselben Zeichen beginnen.Ich habe den Bonus für den Umgang mit mehr als 100 Ziffern angewendet.
_
wird in dieser Lösung nicht als Interpunktion behandelt.quelle
_
als Interpunktion behandeln ._
immer Interpunktion? Was ist mit Sätzen wieMy nickname on Stack Overflow is britishtea_500
.Mathematica, 123 Bytes * 0,8 = 98,4
Fast die längste Einreichung bisher, aber:
quelle
Python -
130 127116 - 17 Stellen piWie in der Antwort von @flawr ,
Law ' s fine
undLaw's fine
beide geben True zurück.Vielen Dank an @Emil für das Entfernen von 12 Zeichen aus dem Programm.
quelle
l
in einer Variablen speichern und die Funktion mit Lambda definieren.Java, 185
quelle
Python 3, 17 Stellen von pi, 104
quelle
;
Gründen der Lesbarkeit durch eine neue Zeile ersetzen . Außerdem können einige Leerzeichen entfernt werden.Python 3 - 129
Interpunktion wird nicht berücksichtigt:
quelle
T-SQL
488383Und jetzt zu einer großen T-SQL-Lösung :)
Dadurch wird eine Inline-Tabellenwertfunktion erstellt, die einen rekursiven CTE verwendet, um Wortgrenzen zu erkennen.Erstellt eine Skalarfunktion, die sich durch die Wörter und PI auf 31 Dezimalstellen (erste 0) kaut. Es wird folgendermaßen aufgerufen
quelle
CJam, 40
Es ist unklar, was unter "jeglicher Art von Interpunktion" zu verstehen ist. Diese Lösung entfernt die
,.'"?!;;
Zeichen.quelle
Bash- und Unix-Tools, 111
quelle
NodeJS 32 Ziffern 230 Bytes
Ich kann es mit JS: D nicht kürzer machen
quelle