Melakukan sejarah membaca dan mencatat, saya tidak bisa tidak bosan menulis semua tanggal panjang ini –– 1784 adalah enam lift pensil! jǝǝz!
Seperti yang Anda lihat, saya –seperti kebanyakan poster penantang di situs ini –– malas ketika menulis sesuatu. Karena itu, saya meminta Anda untuk membantu saya mempersingkat beberapa kencan. Tentu saja, solusi Anda harus sesingkat mungkin karena tangan saya sudah lelah menulis mengetik kasus uji.
Bagaimana saya mempersingkat kencan?
Nah lucu kamu harus bertanya. Ini cukup sederhana:
- Ambil dua bilangan bulat sebagai input dalam urutan apa pun yang Anda inginkan (
(smallest, biggest)
atau(biggest, smallest)
). - Ambil yang lebih besar dari dua angka, dan ambil hanya bagian yang tidak dalam jumlah yang lebih kecil.
Misalnya, diberikan2010, 2017
, disingkat2017
menjadi-7
karena201_
berada di keduanya di tempat digit yang sama. - Cetak atau kembalikan nomor yang lebih kecil, diikuti dengan tanda hubung dan kemudian nomor yang lebih pendek.
Sebagai contoh:
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
atau1914-8
?600, 6000 -> 600-6000
?1914-8
adalah WWI. Sekarang berikan browniesku!Jawaban:
05AB1E , 16 byte
Cobalah online!
Menggunakan algoritma Jonathan Allan.
sumber
Jelly ,
1716 byteProgram lengkap yang mencatat daftar tahun
from, to
dan mencetak hasilnya.Cobalah online! atau lihat test suite .
Bagaimana?
sumber
[600, 6000]
muncul. Dan sepertinya ini telah diremehkan.Javascript ES6,
5957 karakterUji:
sumber
(x+'-'+y)
?x=>y=>
) untuk menyimpan byte.Dyalog APL, 29 byte
Cobalah online!
Bagaimana?
⍺,'-'
- tahun pertama +, -
=x←⍕⍵
- bandingkan tahun kedua yang diformat((-⍴x)↑⍕⍺)
- ke tahun pertama yang dipenuhi ruang dari kiri⌈\~
- Meniadakan hasil dan menandai semua 1 setelah yang pertamax/⍨
- ambil tahun kedua di semua posisi yang ditandaisumber
Retina , 34 byte
Cobalah online! Tautan termasuk kasus uji. Grup balancing dan batas kata memastikan bahwa kedua angka memiliki panjang yang sama sebelum awalan dicocokkan. Jika tidak, maka batas kata cocok dengan di awal tahun kedua, jadi yang terjadi hanyalah koma berubah menjadi tanda hubung.
sumber
Python 2 , 102 byte
Cobalah online!
Saya merasa harus ada cara yang lebih baik untuk melakukan ini karena tampaknya sangat bertele-tele. Penyalahgunaan ekstrim dari evaluasi `` variabel untuk ini berfungsi karena kami tidak dapat mengambil string sebagai input.
sumber
Python 2, 127 byte
Saya masih baru dalam hal ini, jadi saya tidak tahu apakah boleh menempatkan jawaban lain dalam bahasa yang sama. Karena saya tidak dapat mengomentari kiriman orang lain, namun saya mengambil risiko di sini.
Cobalah online!
Apa yang saya lakukan adalah, saya membandingkan setiap digit dari kedua kali dan jika yang lebih besar bervariasi saya mencetak angka yang lebih kecil ditambah sisanya yang lebih besar.
Jika seseorang bisa membantu saya bermain golf di baris ketiga saya akan menghemat seperti 30+ byte. Saya hanya menerapkannya untuk menangani kasus 600.6000 di mana angka-angkanya sama tetapi tidak sama panjangnya.
sumber
Haskell , 143 byte
Cobalah online!
smallest biggest
input (bilangan bulat).if length x<length y then y
berarti bahwa jikax
memiliki digit lebih sedikit dari ituy
maka bagian yang umum tidak berlaku. Selain itu, kami menyimpan digit dariy
digit berbeda pertama.sumber
Python 2 ,
8988 byteCobalah online!
sumber
Gangguan Umum, 120 byte
Cobalah online!
Terkecil, Terbesar.
Tidak Disatukan:
sumber
C ++,
285271 byte-14 byte berkat Zacharý
Kode untuk pengujian:
sumber
using namespace std;
dan menghapusT
makro.