Creo que todos hemos hecho esto cuando éramos niños: algunos sitios web requieren una edad mínima de 18 años, por lo que solo restamos unos años del año de nacimiento y voilà, somos "mayores de 18 años".
Además, para la mayoría de las atracciones en los parques de atracciones, la altura mínima para ingresar es de 1.40 metros (aquí en los Países Bajos, como mínimo). Por supuesto, esto puede ser engañado con menos facilidad que la edad, pero podría usar zapatos con tacones gruesos, peinarse, usar un sombrero, ponerse de puntillas, etc.
Entrada:
Su programa / función acepta un entero positivo o decimal.
Salida:
- ¿Es la entrada un número entero
>= 18
? Simplemente imprima la entrada. - ¿Es la entrada un número entero
0-17
? Imprimir18
. - ¿La entrada es un decimal
>= 1.4
? Simplemente imprima la entrada. - ¿La entrada es un decimal
0.0-1.4
? Imprimir1.4
.
Reglas de desafío:
- Suponga que la entrada siempre estará en el rango de
0-122
(la mujer más vieja fue 122) o0.0-2.72
(el hombre más alto fue 2.72). - Se le permite tomar la entrada como una cadena, objeto o cualquier otra cosa que prefiera.
- Las entradas decimales nunca tendrán más de tres lugares decimales después del punto decimal.
2
o2.
ambos no son salidas válidas para2.0
. Usted es libre de salida2.00
o en su2.000
lugar,2.0
sin embargo.
Al igual que la entrada, la salida nunca tendrá más de tres decimales después del punto.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados, programas completos. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
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
fuente
fuente
0.0-2.72 (tallest man ever was 2.72).
- No lo eres0.0
cuando naces ...0
y0.0
. :) El agregadotallest man ever was 2.72
yoldest woman ever was 122
acaba de agregarse como hechos informativos para los interesados.Respuestas:
Convexo , 9 bytes
Pruébalo en línea!
fuente
Python 2.7, 34 bytes
fuente
max(2.0,[18,1.4][True]) == max(2.0,1.4) == 2.0
JavaScript (ES6), 27
31Entrada tomada como una cadena. Para verificar si el valor de entrada tiene decimales, se agrega a sí mismo: si no hay un punto decimal, el resultado sigue siendo un número válido, de lo contrario no lo es. Para reconocer un número válido (incluido 0), utilizo la división ya que en javascript
1/n
es numérico y no 0 para ningún numéricon
(eventualmente el valor esInfinity
paran==0
), de lo contrario esNaN
Prueba
Mi solución anterior (incorrecta):
Tomando la entrada como un número, puede usar el operador restante
%
para verificar si el número es entero.o
Pero esto no funciona como la solicitud desafío para discriminar entre, por ejemplo,
2
y2.0
, y que es el mismo número. Por lo tanto, no es posible obtener la entrada como un númerofuente
2.0
debe ser2.0
, no18
.2.0%1
y1.0%1
resultará en 01/(x+x)
- Ahora eso es imaginativo!05AB1E ,
1311 bytesUtiliza la codificación CP-1252 .
Explicación
Pruébalo en línea
fuente
Java 8,
906157 bytes-4 bytes regresan en
Object
lugar deString
; y algunos bytes adicionales que convierten Java 7 a 8.-4 bytes tomando la entrada como en
Object
lugar deString
también.Explicación:
Pruébalo aquí
fuente
+
, lo que significa que si elimina los paréntesis, se convertiría en(""+i.contains(...)) ?
Pyth, 14 bytes
Pruébalo en línea.
fuente
PHP, 40 bytes
modificado por @ user59178 Gracias
PHP, 42 Bytes primera versión
fuente
is_int($i=$argv[1]+0)
es 2 bytes más corto questrpos($i=$argv[1],".")
y puede servir para el mismo propósito si intercambia el1.4
y el18
is_numeric
en una cadena pero nois_int
+0
, para convertirlo a un tipo numérico.strpos($i=$argv[1],".")
versión, ¿se acordó de intercambiar las salidas del ternario?<?=max(is_int(0+$i=$argv[1])?18:1.4,$i);
lugar de<?=max(is_int($i=$argv[1]+0)?18:1.4,$i);
evitar la salida de 2 cuando se le da 2.0.EXCEL:
263129 BytesLa fórmula puede ir a cualquier parte excepto A1, la celda de entrada.
Se corrigieron los errores y se reemplazaron con la sugerencia de Emigna.
Gracias a Alexandru por salvarme algunos bytes usando verdades
fuente
n
para la celda de entrada? Puede estar en cualquier parte del documento y también es 2 bytes más corto.Brachylog , 14 bytes
Pruébalo en línea!
Explicación
fuente
Perl,
2927 bytesIncluye +2 para
-lp
Dar entrada sobre STDIN
adult.pl
:Si no le importa una nueva línea adicional si realmente fuera un adulto completo, dejar de lado la
l
opción de 26 bytes también funcionafuente
GNU sed, 40 + 1 = 41 bytes
(puntuación +1 por uso de
-r
bandera para intérprete)Anotado:
Aprovechamos las restricciones en la entrada, por lo que no tenemos que probar el inicio de la cadena cuando vemos '1'. - sabemos que solo hay un dígito antes del punto decimal.
Resultado de la prueba:
fuente
Haskell, 50 bytes
Ejemplo de uso:
f "1.0"
->"1.6"
.El tipo estricto de Haskell requiere el uso de cadenas como entrada y salida. Howevers,
read
,max
yshow
son polimórficos y manejar todos los tipos numéricos.fuente
(#)x=map(show.max x.fst).reads;f s=head$18#s++1.4#s
reads
. Con una ligera modificación es un byte más corto que el mío. Por favor publíquelo como una respuesta separada.x#y=show.max x.fst<$>reads y;f s=head$18#s++1.4#s
.Java,
7970 bytesDefine dos métodos con sobrecarga, que utilizan el operador condicional.
Llámalo como
f(5)
of(1.4f)
.fuente
x<18?18:x
yx<1.4f?1.4f:x
son más cortos que elMath.max
. Creo que puede encontrar consejos para jugar golf en Java interesantes para leer. :)CJam,
1814 bytesGuardado 4 bytes gracias a Martin Ender.
Intérprete en línea
fuente
C #, 69 bytes
Pruébalo en línea!
Programa completo con casos de prueba:
Una solución bastante sencilla. Tenga en cuenta que en algunos sistemas float.Parse () puede devolver resultados incorrectos. Pase CultureInfo.InvariantCulture como segundo argumento según esta respuesta .
fuente
s.Contains(".")
cons[1]=='.'
s[1]==46
, o un enfoque aún más agresiva (suponiendo que sólo tiene dígitos y un carácter en el índice 1 '') (tiene un código ASCII de 46 ''.):s[1]<47
.Lenguaje de fórmulas IBM / Lotus Notes,
5849 bytesFórmula de campo calculado donde a es un campo numérico editable.
EDITAR
Alternativa inspirada en @Mego
fuente
Jalea ,
16 1513 bytesTryItOnline
O vea todos los casos de prueba, también en TryItOnline
¿Cómo?
fuente
18
para2.0
, tristemente :(C ++, 68 bytes
Esta respuesta es en realidad 2 funciones con el mismo nombre, y el compilador determina a qué llamar, por lo que actúa como una función sin que tenga que tomar una entrada y decidir cuál es. Dado que se garantiza que la entrada en el punto flotante sea de la misma precisión que la salida, puedo devolverla de forma segura sin tener que truncarla tampoco.
Sin golf + pruebas
fuente
float
s enauto
s. Rechacé la edición de acuerdo con la política, pero siéntase libre de editarla usted mismo si ha confirmado que funciona.C #, 58 bytes
No se necesita un análisis de cadenas loco para C #. Se espera que la entrada sea un
int
ofloat
(desafortunadamente C # no puede emitir undouble
tofloat
sidouble
está en unobject
). La salida seráint
ostring
en unobject
.(Casi no cumplí el requisito de al menos 1 decimal, lo agregué ahora)
Sin golf:
Implementación alternativa que también es de 58 bytes.
fuente
En realidad, 16 bytes
Pruébalo en línea!
Explicación:
fuente
9τ
lugar de solo18
? Sé que es el mismo conteo de bytes, por lo que realmente no importa, pero18
parece más legible. ¿O hay alguna razón por la que no funcionará en el lenguaje de programación / implementación actual?18
empuja ay1
an8
. Para empujar un literal18
, usaría:18
, que es más largo que9τ
.Emacs Lisp, 37 bytes
Adivina del "tipo de datos" si se debe usar la versión entera o flotante. (
floatp
devuelvet
para1.0
, pero no para1.
) El parámetro es un número como entero o flotante, es decir, debe satisfacernumberp
.fuente
Haskell, 49 bytes
Básicamente, esto primero intenta leer la entrada como un número entero y luego como un doble si eso falla. Luego procede a compararlo con la línea base de comparación respectiva.
fuente
Dyalog APL , 14 bytesRenuncia inválida por otras especificaciones⎕IO←0
que es el predeterminado en muchos sistemas. Toma una cuerda como argumento.⍎⌈
max del argumento evaluado y18 1.4⊃⍨
{18,1.4} seleccionado por'.'∘∊
si el argumento contiene un puntofuente
C #, 95 bytes
Golfizado:
Sin golf:
Casos de prueba:
Salida:
fuente
string y(string p){int a;return int.TryParse(p,out a)?a<1?"18":p:double.Parse(p)<1.4?"1.4":p;}
(se eliminó el paréntesis;>=1.4
al<1.4
cambiar el"1.4"
yp
; se cambiódecimal
paradouble
queM
desaparezca. Además, alguien más acaba de publicar un enfoque diferente en C # que es un poco más corto. Puede encontrar Consejos para jugar al golf en C # interesante para leer. ¡Nuevamente, bienvenido! :)float.Parse
lugar dedouble.Parse
. Y también, si mueve la declaración de a a los argumentos del método con un valor predeterminado, puede descartar su declaración de retorno utilizando el miembro con cuerpo de expresión. por ejemplo: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 bytes
Uso:
La prueba se realizó con
gawk
RHEL 6. Intenté con todos los casos de prueba, desafortunadamente no tengoAWK
en la máquina que tenga acceso a Internet, por lo que no es posible copiar y pegar.¿Hay una forma más compacta de hacer esto
AWK
?fuente
C, 50 bytes:
El recuento de bytes incluye la nueva línea al final de la definición de macro.
Prueba :
fuente
C #, 71 bytes
pruébalo aquí
fuente
C,
119111105100Probado con
Salida
fuente
Lote, 102 bytes
Primero determina si la entrada es un entero comprobando si eliminar todos los
.
s tiene algún efecto en la cadena. Si es así, el valor se compara fácilmente con 18, de lo contrario, el primer y el tercer carácter se combinan en un número que se compara con 14.fuente
PHP: 40 bytes
psuedocode, (giro anidado):
fuente