Занимаясь чтением истории и ведением заметок, я не могу не устать писать все эти длинные даты - 1784 - это шесть полных карандашных лифтов! jǝǝz!
Как вы можете видеть, я - как и большинство постеров на этом сайте - ленив, когда дело доходит до написания материала. Поэтому я прошу вас помочь мне сократить некоторые даты. Конечно, ваше решение должно быть как можно короче, так как моя рука уже устала писать тесты.
Как мне сократить дату?
Ну, смешно, вы должны спросить. Это довольно просто:
- Возьмите два целых числа в качестве ввода в любом порядке, который вы хотите (
(smallest, biggest)
или(biggest, smallest)
). - Возьмите большее из двух чисел и возьмите только часть, не меньшую.
Например, если задано2010, 2017
, сократить2017
до-7
потому что201_
находится в обоих в тех же цифрах. - Напечатайте или верните меньшее число, затем черту и затем сокращенное большее число.
Например:
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
или1914-8
?600, 6000 -> 600-6000
?1914-8
это первая мировая война Теперь дай мне мои пирожные!Ответы:
05AB1E , 16 байтов
Попробуйте онлайн!
Использует алгоритм Джонатана Аллана.
источник
Желе ,
1716 байтовПолная программа со списком лет
from, to
и распечаткой результата.Попробуйте онлайн! или посмотрите набор тестов .
Как?
источник
[600, 6000]
появился черт . И, кажется, это было недооценено.Javascript ES6,
5957 символовТестовое задание:
источник
(x+'-'+y)
?x=>y=>
), чтобы сохранить байт.Дьялог АПЛ, 29 байт
Попробуйте онлайн!
Как?
⍺,'-'
- первый год +, -
=x←⍕⍵
- сравнить второй год в формате((-⍴x)↑⍕⍺)
- до первого года, дополненного пробелами слева⌈\~
- отменить результат и отметить все 1 после первогоx/⍨
- взять второй год во все отмеченные позицииисточник
Сетчатка , 34 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Балансирующая группа и граница слова гарантируют, что оба числа имеют одинаковую длину перед совпадением префикса. Если нет, то граница слова совпадает в начале второго года, поэтому все, что происходит, это то, что запятая меняется на тире.
источник
Python 2 , 102 байта
Попробуйте онлайн!
Я чувствую, что должен быть лучший способ сделать это, так как это кажется действительно многословным. Чрезвычайное злоупотребление `` оценкой переменных для этого работает, так как мы не можем принимать строки в качестве входных данных.
источник
Python 2, 127 байт
Я все еще новичок в этом, поэтому я не знаю, можно ли разместить другой ответ на том же языке. Поскольку я не могу комментировать посты других людей, я рискую здесь.
Попробуйте онлайн!
Что я делаю, я сравниваю каждую отдельную цифру с обоих раз, и если большая меняется, я печатаю меньшее число плюс остальное большее.
Если бы кто-то мог помочь мне выйти из игры на третьей линии, я бы сэкономил около 30 байт. Я реализовал это только для случая 600,6000, где цифры равны, но не одинаковой длины.
источник
Haskell , 143 байта
Попробуйте онлайн!
smallest biggest
ввод (целые числа).if length x<length y then y
означает, что если числоx
меньше, чемy
тогда, то общая часть является недействительной. Иначе, мы храним цифрыy
от первой другой цифры.источник
Python 2 ,
8988 байтПопробуйте онлайн!
источник
Common Lisp, 120 байт
Попробуйте онлайн!
Самый маленький, самый большой.
Ungolfed:
источник
С ++,
285271 байт-14 байт благодаря Захари
Код для тестирования:
источник
using namespace std;
удаливT
макрос.