Ao ler minha história e fazer anotações, não posso deixar de me cansar de escrever todas essas longas datas - 1784 são seis elevadores de lápis inteiros! jz!
Como você pode ver, eu - como a maioria dos pôsteres de desafio deste site - sou preguiçoso quando se trata de escrever coisas. Portanto, peço que me ajude a reduzir algumas datas. Obviamente, sua solução deve ser o mais curta possível, pois minha mão já está cansada de escrever digitando os casos de teste.
Como reduzo um encontro?
Bem engraçado, você deveria perguntar. É bem simples:
- Tome dois números inteiros como entrada na ordem que desejar (
(smallest, biggest)
ou(biggest, smallest)
). - Pegue o maior dos dois números e pegue apenas a parte que não está no número menor.
Por exemplo, dado2010, 2017
, reduza2017
para-7
porque201_
está nos dois dígitos iguais. - Imprima ou retorne o número menor, seguido de um traço e, em seguida, o número maior reduzido.
Por exemplo:
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
ou1914-8
?600, 6000 -> 600-6000
?1914-8
é a Primeira Guerra Mundial. Agora me dê meus brownies!Respostas:
05AB1E , 16 bytes
Experimente online!
Usa o algoritmo de Jonathan Allan.
fonte
Geléia ,
1716 bytesUm programa completo com uma lista de anos
from, to
e a impressão do resultado.Experimente online! ou veja a suíte de testes .
Quão?
fonte
[600, 6000]
apareceu malditamente . E parece que isso foi subestimado.Javascript ES6,
5957 caracteresTeste:
fonte
(x+'-'+y)
?x=>y=>
) para salvar um byte.Dyalog APL, 29 bytes
Experimente online!
Quão?
⍺,'-'
- o primeiro ano +, -
=x←⍕⍵
- compare o segundo ano formatado((-⍴x)↑⍕⍺)
- para o primeiro ano preenchido com espaços da esquerda⌈\~
- negar o resultado e marcar todos os 1s após o primeirox/⍨
- faça o segundo ano em todas as posições marcadasfonte
Retina , 34 bytes
Experimente online! O link inclui casos de teste. O grupo de balanceamento e o limite da palavra garantem que ambos os números tenham o mesmo comprimento antes da correspondência do prefixo. Caso contrário, o limite da palavra corresponderá no início do segundo ano, então tudo o que acontece é que a vírgula muda para um hífen.
fonte
Python 2 , 102 bytes
Experimente online!
Sinto que deve haver uma maneira melhor de fazer isso, pois parece realmente detalhado. Abuso extremo da `` avaliação de variáveis para que isso funcione, pois não podemos usar seqüências de caracteres como entrada.
fonte
Python 2, 127 bytes
Eu ainda sou novo nisso, então não sei se posso colocar outra resposta no mesmo idioma. Como ainda não posso comentar sobre as postagens de outras pessoas, tomo minhas chances aqui.
Experimente online!
O que faço é comparar cada dígito dos dois tempos e, se o maior variar, imprimo o número menor mais o resto do maior.
Se alguém pudesse me ajudar a jogar na terceira linha, eu economizaria mais de 30 bytes. Eu apenas o implementei para lidar com o caso de 600.6000, onde os dígitos são iguais, mas não do mesmo comprimento.
fonte
Haskell , 143 bytes
Experimente online!
smallest biggest
entrada (inteiros).if length x<length y then y
significa que sex
tiver menos dígitos do quey
a parte comum será nula. Senão, armazenamos os dígitos doy
primeiro dígito diferente.fonte
Python 2 ,
8988 bytesExperimente online!
fonte
Lisp comum, 120 bytes
Experimente online!
Menor, Maior.
Ungolfed:
fonte
C ++,
285271 bytes-14 bytes graças a Zacharý
Código para teste:
fonte
using namespace std;
e remover aT
macro.