Écrivez un programme qui définit une fonction qui peut vérifier si une variable chaîne appelée "tout ce que vous voulez ou entré par l'utilisateur" est ou non un piem. (piem = une histoire ou un poème dans lequel la longueur des mots représente les chiffres de π ( de Wikipedia ))
Quelques exemples:
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
Vous devez supprimer tout type de ponctuation ou de nouvelle ligne avant le traitement. Golf pur code, les victoires les plus courtes
Date de fin: soirée du 1/10/2014
Réponses diverses
- Combien de chiffres devons-nous traiter? Plus que 10
- Comme question d'intérêt, comment interpréter les 0 dans PI? Mots ignorés ou à 10 lettres? Comme mots de 10 lettres
- "une variable appelée piem" - donc le nom du paramètre doit être piem? Non, ce n'est pas le cas, le texte de la question a été corrigé
- Un bonus amusant pourrait être une solution qui est elle-même un piem Si votre solution est un piem, vous obtenez * 0,5 bonus
- Par souci d'argument, est-ce que _ est toujours une ponctuation? Vous pouvez décider s'il s'agit de ponctuation ou non
- On ne sait pas ce que l'on entend par "tout type de ponctuation", je veux dire,. '"?! ;; ()
- Donc, les chiffres doivent être comptés? Et l'amende de Law serait fausse? Les chiffres doivent être traités comme des lettres, Law's fine = False; Amende de la loi = Vrai
commentaires
- La solution APL doit être comptée en octets
- Si votre solution fonctionne pour plus de 100 chiffres de pi, vous obtenez * 0,8 bonus
- En raison du grand intérêt, la date de fin est un jour de plus dans le futur.
piem
? Cela rend toutes les réponses actuelles incorrectes.Réponses:
APL (39)
Il utilise tous les chiffres fournis par la constante pi de l'interpréteur APL, jusqu'à une limite de 99. Dans mon cas (Dyalog APL 14 32 bits), il s'agissait de 16 chiffres. La version 64 bits a probablement plus de chiffres. Cependant, 16 chiffres suffisent pour que les exemples donnés fonctionnent.
Les chaînes qui ont plus que ce nombre de mots échoueront , même si tous les chiffres qu'il a pu vérifier étaient vrais. (Il en va de même pour les autres articles, au moment de la rédaction de cet article.) Par exemple, s'il n'y avait que 10 chiffres, celui «Comment je veux boire un verre» échouerait. Cela peut être corrigé, mais au prix de 14 caractères:
Cette version accepte toute chaîne dont les N premiers chiffres sont corrects.
la source
JavaScript
(169) (140) (137) (135)(63) pour 17 chiffres de piDans ma version
Law's fine
etLaw ' s fine
retourner les deux vrai.Nouvelle version (63) par Ingo Bürk et hsl
Nouvelle version (135) pour 17 chiffres de pi (Merci à Ingo Bürk):
Ancienne version (169) pour 32 chiffres de pi:
la source
1e15*Math.PI+"2384626433832795"
for
boucle ne peut pas être ajoutée de cette façon.r=0
puis la boucler+=s[a].length!=p[a]
(vous pouvez omettre le;
à la fin). Revenez ensuite!r
.Rubis,
11310179 (98 * 0,8)Explication
String
.999
décimales et transformé en une chaîne avec le.
supprimé."Let's"
est compté comme deux mots:"Let"
et"s"
.Array#map
pour convertir chaque mot à la taille du mot, les concaténer en aString
.String
s créés commencent par les mêmes caractères.J'ai appliqué le bonus pour gérer plus de 100 chiffres.
_
n'est pas traité comme ponctuation dans cette solution.la source
_
comme une ponctuation._
toujours la ponctuation? Qu'en est-il des phrases telles queMy nickname on Stack Overflow is britishtea_500
.Mathematica, 123 octets * 0,8 = 98,4
Presque la soumission la plus longue jusqu'à présent, mais:
la source
Python -
130 127116 - 17 chiffres de piComme dans la réponse de @flawr ,
Law ' s fine
et lesLaw's fine
deux renvoient True.Merci à @Emil d' avoir supprimé 12 caractères du programme.
la source
l
dans une variable et en définissant la fonction à l'aide de lambda.Java, 185
la source
python 3, 17 chiffres de pi, 104
la source
;
par une nouvelle ligne pour plus de lisibilité. De plus, un certain nombre d'espaces peuvent être supprimés.Python 3 - 129
Ne tient pas compte de la ponctuation:
la source
T-SQL
488383Et maintenant pour une grande solution T-SQL :)
Cela crée une fonction de valeur de table en ligne qui utilise un CTE récursif pour détecter les limites des mots.Crée une fonction scalaire qui mâche son chemin à travers les mots et PI jusqu'à 31 décimales (premier 0). Il est appelé de la manière suivante
la source
CJam, 40
On ne sait pas ce que l'on entend par "tout type de ponctuation"; cette solution supprime les
,.'"?!;;
caractères.la source
Outils Bash et Unix, 111
la source
NodeJS 32 chiffres 230 octets
Je ne peux pas le raccourcir avec JS: D
la source