Je pense que nous avons tous fait cela dans notre enfance: certains sites Web exigent un âge minimum de 18 ans. Nous soustrayons donc quelques années de l'année de naissance et voilà, nous avons 18 ans ou plus.
En outre, pour la plupart des manèges dans les parcs d’attractions, la hauteur minimale à franchir pour entrer est de 1,40 mètre (ici aux Pays-Bas au moins). Bien sûr, cela peut être triché moins facilement que l'âge, mais vous pouvez porter des chaussures à talons épais, relever vos cheveux, porter un chapeau, vous tenir debout sur vos orteils, etc.
Contribution:
Votre programme / fonction accepte un entier positif ou un nombre décimal.
Sortie:
- L'entrée est-elle un entier
>= 18
? Imprimez simplement l'entrée. - L'entrée est-elle un entier
0-17
? Imprimer18
. - L'entrée est-elle décimale
>= 1.4
? Imprimez simplement l'entrée. - L'entrée est-elle décimale
0.0-1.4
? Imprimer1.4
.
Règles du challenge:
- Supposons que l'entrée sera toujours dans la plage de
0-122
(la plus vieille femme a jamais été 122) ou0.0-2.72
(le plus grand homme a jamais été 2,72). - Vous êtes autorisé à prendre l’entrée sous forme de chaîne, d’objet ou de tout autre élément de votre choix.
- Les entrées décimales n'auront jamais plus de trois décimales après le point décimal.
2
ou les2.
deux ne sont pas des sorties valides pour2.0
. Vous êtes libre de sortie2.00
ou2.000
au lieu de2.0
cependant.
Tout comme l'entrée, la sortie n'aura jamais plus de trois décimales après le point.
Règles générales:
- C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Ne laissez pas les langues de code-golf vous décourager de poster des réponses avec des langues autres que le code de golf. Essayez de trouver une réponse aussi courte que possible à n'importe quel langage de programmation. - Les règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés, programmes complets. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Ajoutez également une explication si nécessaire.
Cas de test:
0 -> 18
1 -> 18
2 -> 18
12 -> 18
18 -> 18
43 -> 43
115 -> 115
122 -> 122
0.0 -> 1.4
1.04 -> 1.4
1.225 -> 1.4
1.399 -> 1.4
1.4 -> 1.4
1.74 -> 1.74
2.0 -> 2.0
2.72 -> 2.72
code-golf
arithmetic
Kevin Cruijssen
la source
la source
0.0-2.72 (tallest man ever was 2.72).
- Tu0.0
n'es pas quand tu es né ...0
et0.0
. :) Le ajoutétallest man ever was 2.72
etoldest woman ever was 122
vient d'être ajouté en tant que faits d'information pour ceux qui sont intéressés.Réponses:
Convexe , 9 octets
Essayez-le en ligne!
la source
Python 2.7, 34 octets
la source
max(2.0,[18,1.4][True]) == max(2.0,1.4) == 2.0
JavaScript (ES6), 27
31Entrée prise comme une chaîne. Pour vérifier si la valeur d'entrée a des décimales, elle est ajoutée à elle-même: s'il n'y a pas de point décimal, le résultat est toujours un nombre valide, sinon ce n'est pas le cas. Pour reconnaître un nombre valide (y compris 0), j’utilise la division car javascript
1/n
est numérique et non 0 pour n’importe quel chiffren
(éventuellement la valeur estInfinity
pourn==0
), sinon c’estNaN
Tester
Ma solution précédente (mauvaise):
En prenant l'entrée comme un nombre, vous pouvez utiliser l'opérateur restant
%
pour vérifier si le nombre est entier.ou
Mais cela ne fonctionne pas comme la demande de contestation de discrimination entre, disons,
2
et2.0
et c'est le même numéro. Il n'est donc pas possible d'obtenir l'entrée sous forme de nombrela source
2.0
devrait être2.0
, pas18
.2.0%1
et1.0%1
donnera lieu à 01/(x+x)
- maintenant c'est imaginatif!05AB1E ,
13 à11 octetsUtilise le codage CP-1252 .
Explication
Essayez-le en ligne
la source
Java 8,
906157 octets-4 octets renvoyés à la
Object
place deString
; et quelques octets supplémentaires convertissant Java 7 en 8.-4 octets en prenant l'entrée comme
Object
au lieu deString
.Explication:
Essayez ici.
la source
+
, ce qui signifie que si vous supprimiez les parenthèses, il deviendrait(""+i.contains(...)) ?
Pyth, 14 octets
Essayez-le en ligne.
la source
PHP, 40 octets
modifié par @ user59178 Merci
PHP, première version de 42 octets
la source
is_int($i=$argv[1]+0)
est 2 octets plus court questrpos($i=$argv[1],".")
et peut servir au même but si vous1.4
18
is_numeric
sur une chaîne mais pasis_int
+0
convertir en un type numérique.strpos($i=$argv[1],".")
version, avez-vous pensé à permuter les sorties du ternaire?<?=max(is_int(0+$i=$argv[1])?18:1.4,$i);
plutôt<?=max(is_int($i=$argv[1]+0)?18:1.4,$i);
éviter d’éviter de sortir 2 quand 2.0.EXCEL:
263129 octetsLa formule peut aller n'importe où sauf A1, la cellule d'entrée.
Correction d'erreurs et remplacé par la suggestion d'Emigna.
Merci à Alexandru pour m'avoir sauvé quelques octets en utilisant des vérités
la source
n
pour la cellule en entrée? Il peut alors être n'importe où dans le document et il est également plus court de 2 octets.Brachylog , 14 octets
Essayez-le en ligne!
Explication
la source
Perl,
29 à27 octetsComprend +2 pour
-lp
Donnez votre avis sur STDIN
adult.pl
:Si vous ne craignez pas un saut de ligne supplémentaire si vous étiez vraiment un adulte, laisser de côté l'
l
option de 26 octets marche aussila source
GNU sed, 40 + 1 = 41 octets
(score +1 pour l'utilisation du
-r
drapeau à l'interprète)Annoté:
Nous profitons des contraintes sur les entrées, vous n'avez donc pas à tester le début de chaîne lorsque vous voyez '1'. - Nous savons qu'il n'y a qu'un chiffre avant la virgule.
Résultat du test:
la source
Haskell, 50 octets
Exemple d'utilisation:
f "1.0"
->"1.6"
.Le type strict de Haskell nécessite l'utilisation de chaînes en entrée et en sortie. Howevers,
read
,max
etshow
sont polymorphes et de gérer tous les types numériques.la source
(#)x=map(show.max x.fst).reads;f s=head$18#s++1.4#s
reads
. Avec une légère modification, il est un octet plus court que le mien. S'il vous plaît poster comme une réponse séparée.x#y=show.max x.fst<$>reads y;f s=head$18#s++1.4#s
.Java,
7970 octetsDéfinit deux méthodes avec surcharge, qui utilisent l'opérateur conditionnel.
Appelez ça comme
f(5)
ouf(1.4f)
.la source
x<18?18:x
etx<1.4f?1.4f:x
sont plus courts que leMath.max
. Je pense que vous trouverez des astuces pour jouer au golf en Java intéressantes à lire. :)CJam,
1814 octetsSauvegardé 4 octets grâce à Martin Ender.
Interprète en ligne
la source
C #, 69 octets
Essayez-le en ligne!
Programme complet avec cas de test:
Une solution assez simple. Notez que sur certains systèmes, float.Parse () peut renvoyer des résultats incorrects. Passez CultureInfo.InvariantCulture comme deuxième argument en fonction de cette réponse .
la source
s.Contains(".")
pars[1]=='.'
s[1]==46
, ou une approche encore plus agressive ( en supposant que vous avez seulement des chiffres et un caractère à l' index 1 « ») (a un code ASCII de 46 « »):s[1]<47
.Formule IBM / Lotus Notes,
5849 octetsFormule de champ calculé où a est un champ numérique éditable.
MODIFIER
Alternative inspirée par @Mego
la source
Jelly ,
16 1513 octetsTryItOnline
Ou consultez tous les cas de test, également sur TryItOnline
Comment?
la source
18
pour2.0
, malheureusement :(C ++, 68 octets
Cette réponse correspond en fait à 2 fonctions portant le même nom, et le compilateur me demande lequel appeler. Elle agit donc comme une fonction sans que je doive prendre une entrée et décider de quelle entrée. Etant donné que l’entrée sur la virgule flottante a la garantie d’être de la même précision que la sortie, je peux la retourner en toute sécurité sans avoir à la tronquer non plus.
Ungolfed + tests
la source
float
s enauto
s. J'ai rejeté la modification conformément à la politique, mais n'hésitez pas à la modifier si vous avez confirmé que cela fonctionne.C #, 58 octets
Aucune analyse de chaîne folle nécessaire pour C #. On s'attend à ce que l'entrée soit un
int
oufloat
(malheureusement, C # ne peut pas lancer undouble
àfloat
si ledouble
est dans unobject
). Sortie sera soitint
oustring
dans unobject
.(a failli manquer l'exigence d'au moins 1 décimale, maintenant)
Ungolfed:
Autre implémentation qui est également 58 octets.
la source
En fait, 16 octets
Essayez-le en ligne!
Explication:
la source
9τ
au lieu de juste18
? Je sais que c'est le même nombre d'octets, donc cela n'a pas vraiment d'importance, mais18
semble plus lisible. Ou y a-t-il une raison pour que cela ne fonctionne pas dans le langage actuel d'implémentation / programmation?18
pousse un1
et un8
. Pour pousser un littéral18
, vous utiliseriez:18
, ce qui est plus long que9τ
.Emacs Lisp, 37 octets
Devine à partir du "type de données" si la version entière ou float doit être utilisée. (
floatp
renvoiet
pour1.0
, mais pas pour1.
) Le paramètre est un nombre entier ou flottant, c’est-à-dire qu’il doit satisfairenumberp
.la source
Haskell, 49 octets
Fondamentalement, ceci tente d’abord de lire l’entrée comme un entier, puis comme un double si cela échoue. Puis procède à la comparer à la ligne de base de comparaison respective.
la source
Dyalog APL , 14 octetsRendu invalide par d'autres spécifications⎕IO←0
ce qui est le défaut sur beaucoup de systèmes. Prend la chaîne comme argument.⍎⌈
max de l'argument évalué et18 1.4⊃⍨
{18,1.4} sélectionné par'.'∘∊
si l'argument contient un pointla source
C #, 95 octets
Golfé:
Ungolfed:
Cas de test:
Sortie:
la source
string y(string p){int a;return int.TryParse(p,out a)?a<1?"18":p:double.Parse(p)<1.4?"1.4":p;}
(enlevé entre parenthèses,>=1.4
pour<1.4
en échangeant le"1.4"
etp
, changédecimal
dedouble
sorte que leM
est parti aussi, quelqu'un d' autre vient de poster. Une approche différente en C # qui est légèrement plus courte , vous trouverez peut - être. Conseils pour jouer au golf en C # intéressant à lire. Encore une fois, bienvenue! :)float.Parse
place dedouble.Parse
. De plus, si vous déplacez la déclaration d'un dans les arguments de la méthode avec une valeur par défaut, vous pouvez supprimer votre instruction return en utilisant une expression membre membre. par exemple:string f(string s,int a=0)=>int.TryParse(s,out a)?a>17?s:"18":float.Parse(s)<1.4?"1.4":s;
AWK - 29 octets
Usage:
Les tests ont été effectués avec
gawk
RHEL 6. J'ai essayé tous les scénarios de test. Malheureusement,AWK
la machine ne dispose pas d'un accès à Internet et le copier-coller n'est donc pas possible.Y at-il un moyen plus compact de faire cela dans
AWK
?la source
C, 50 octets:
Le nombre d'octets inclut la nouvelle ligne à la fin de la définition de la macro.
Test :
la source
C #, 71 octets
l'essayer ici
la source
C,
119111105100Testé avec
Sortie
la source
Lot, 102 octets
Détermine d’abord si l’entrée est un entier en vérifiant si la suppression de tous les
.
s a un effet sur la chaîne. Si c'est le cas, la valeur est facilement comparée à 18, sinon les premier et troisième caractères sont combinés en un nombre comparé à 14.la source
PHP: 40 octets
psuedocode, (retournement imbriqué):
la source