Al leer mi historia y tomar apuntes, no puedo evitar cansarme de escribir todas estas fechas largas: ¡1784 son seis elevadores de lápiz completos! jǝǝz!
Como puede ver, yo ––me gusta la mayoría de los pósters de desafío en este sitio– soy flojo cuando se trata de escribir cosas. Por lo tanto, le pido que me ayude a acortar algunas fechas. Por supuesto, su solución debe ser lo más breve posible ya que mi mano ya está cansada de escribir escribiendo los casos de prueba.
¿Cómo acorto una cita?
Bien gracioso deberías preguntar. Es bastante simple:
- Tome dos enteros como entrada en el orden que desee (
(smallest, biggest)
o(biggest, smallest)
). - Tome el mayor de los dos números y tome solo la parte que no esté en el número más pequeño.
Por ejemplo, dado2010, 2017
, acortar2017
a-7
porque201_
está en ambos en los mismos lugares de dígitos. - Imprima o devuelva el número más pequeño, seguido de un guión y luego el número más corto acortado.
Por ejemplo:
Bonus brownies for you if you figure out these dates' significance :)
1505, 1516 -> 1505-16
1989, 1991 -> 1989-91
1914, 1918 -> 1914-8
1833, 1871 -> 1833-71
1000, 2000 -> 1000-2000
1776, 2017 -> 1776-2017
2016, 2016 -> 2016-
These dates lack significance :(
1234567890, 1234567891 -> 1234567890-1
600, 1600 -> 600-1600
1235, 1424 -> 1235-424
600, 6000 -> 600-6000
1914-18
o1914-8
?600, 6000 -> 600-6000
?1914-8
es la primera guerra mundial Ahora dame mis brownies!Respuestas:
05AB1E , 16 bytes
Pruébalo en línea!
Utiliza el algoritmo de Jonathan Allan.
fuente
Jalea ,
1716 bytesUn programa completo que toma una lista de años
from, to
e imprime el resultado.Pruébalo en línea! o ver el conjunto de pruebas .
¿Cómo?
fuente
[600, 6000]
apareció maldita sea . Y parece que esto ha sido poco votado.Javascript ES6,
5957 caracteresPrueba:
fuente
(x+'-'+y)
?x=>y=>
) para guardar un byte.Dyalog APL, 29 bytes
Pruébalo en línea!
¿Cómo?
⍺,'-'
- el primer año +, -
=x←⍕⍵
- compara el segundo año formateado((-⍴x)↑⍕⍺)
- al primer año acolchado con espacios desde la izquierda⌈\~
- niega el resultado y marca todos los 1 después del primerox/⍨
- tomar el segundo año en todas las posiciones marcadasfuente
Retina , 34 bytes
Pruébalo en línea! El enlace incluye casos de prueba. El grupo de equilibrio y el límite de la palabra aseguran que ambos números tengan la misma longitud antes de que coincida el prefijo. Si no, entonces el límite de la palabra coincide al comienzo del segundo año, por lo que todo lo que sucede es que la coma cambia a un guión.
fuente
Python 2 , 102 bytes
Pruébalo en línea!
Siento que tiene que haber una mejor manera de hacerlo, ya que parece realmente detallado. Abuso extremo de la `` evaluación de variables para que esto funcione, ya que no podemos tomar cadenas como entrada.
fuente
Python 2, 127 bytes
Todavía soy nuevo en esto, así que no sé si está bien colocar otra respuesta en el mismo idioma. Como todavía no puedo comentar sobre las publicaciones de otras personas, me arriesgo aquí.
Pruébalo en línea!
Lo que hago es comparar cada dígito de ambas veces y si el más grande varía, imprimo el número más pequeño más el resto del más grande.
Si alguien pudiera ayudarme a jugar golf en la tercera línea, ahorraría más de 30 bytes. Solo lo implementé para manejar el caso de 600,6000 donde los dígitos son iguales pero no de la misma longitud.
fuente
Haskell , 143 bytes
Pruébalo en línea!
smallest biggest
entrada (enteros).if length x<length y then y
significa que six
tiene menos dígitos quey
entonces la parte común es nula. De lo contrario, almacenamos los dígitos dely
primer dígito diferente.fuente
Python 2 ,
8988 bytesPruébalo en línea!
fuente
Lisp común, 120 bytes
Pruébalo en línea!
Más pequeño, más grande.
Sin golf:
fuente
C ++,
285271 bytes-14 bytes gracias a Zacharý
Código para pruebas:
fuente
using namespace std;
quitando laT
macro.