Perluas nomor
Tugas Anda adalah memperluas bilangan bulat yang lebih besar dari 0 dengan cara berikut:
Membagi angka menjadi angka desimal dan untuk setiap digit menghasilkan daftar sesuai dengan aturan ini:
- jika digitnya ganjil, daftar dimulai dengan digit dan turun ke 1;
- jika digitnya genap, daftar dimulai dengan digit dan naik hingga 9.
- jika digitnya 0, daftar kosong.
Tuliskan daftar untuk angka ganjil di bawah angka, dan di atas untuk angka genap. Kemudian luruskan kolom dan kumpulkan angka di setiap baris untuk membuat bilangan bulat. Sebagai langkah terakhir tambahkan angka untuk menemukan perluasan angka.
Berikut adalah contoh aturan di atas yang diterapkan ke 34607:
9
8
79
68
57
346 7 -> 399 7 -> 3997 -> 9418
2 6 288 6 2886
1 5 177 5 1775
4 66 4 664
3 5 3 53
2 4 2 42
1 1 1
Berikut adalah contoh-contoh tesnya:
1: 1
2: 44
3: 6
44: 429
217: 1270
911: 947
2345: 26114
20067: 3450
34875632: 70664504
9348765347634763: 18406119382875401
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte di setiap bahasa menang.
Jawaban:
Jelly , 13 bytes
Tautan monadik yang mengambil dan mengembalikan bilangan bulat positif.
Cobalah online! atau lihat test-suite .
Bagaimana?
sumber
Perl 6 ,
6866 byteCobalah
Cobalah
Diperluas:
sumber
APL (Dyalog) , 39 byte
Badan program penuh. Anjuran untuk input dari STDIN. Mencetak hasil ke STDOUT.
Cobalah online!
Untuk menampilkan kasus tes terakhir dengan benar,
⎕FR
( F loating-titik R epresentation) telah ditetapkan untuk 128-bit Decimal dan⎕PP
( P etak P recision) telah ditetapkan untuk 34 digit.⍞
meminta input teks dari STDIN⍎¨
jalankan masing-masing (dapatkan setiap digit sebagai angka){
...}¨
untuk setiap elemen, terapkan fungsi berikut di mana argumen diwakili oleh⍵
:2|⍵:
jika ganjil (lit. "jika" sisa pembagian bila dibagi 2), maka:⌽
membalikkan⍳
yang ɩ ntegers dari 1 sampai⍵
argumen⋄
lain×⍵:
jika argumennya positif (lit. "if" signum), maka:⌽
membalikkan⍵
argumen,
diikuti oleh⍵
argumen↓
elemen jatuh dari⍳9
yang yang ɩ ntegers dari 1 sampai 9⋄
lain⍬
daftar kosong↑
campur (gabungkan) daftar daftar ini ke dalam satu matriks, padding dengan nol di sebelah kanan⍉
mengubah urutan↓
Bagi matriks ini menjadi daftar daftar0~⍨¨
hapus semua nol dari setiap daftar10⊥¨
konversi masing-masing dari basis-10 ke angka normal (ini mengumpulkan digit)+/
jumlah angkanyasumber
JavaScript (ES6),
888382 byteCatatan
9 - k < x || 9
menyimpan byte lebih dari9 - k >= x && 9
tetapi menghasilkan1
alih-alih0
jika ketidaksetaraan diverifikasi. Ini akan menjadi masalah jika mengarah ke1 > k
, memicu jalur yang salah di terner luar. Tapi itu berarti ituk = 0
dan karena itu9 - k = 9
, jadi kita tidak mungkin memiliki9 - k < x
pada saat yang sama.Uji kasus
NB: Menghapus test case terakhir yang melebihi presisi nomor JS.
Tampilkan cuplikan kode
sumber
Japt , 18 byte
Cobalah online!
sumber
Java 11,
210209191181 byteOk, ini butuh waktu cukup lama (terutama karena saya membuat kesalahan pada awalnya, jadi harus menuliskan setiap langkah untuk lebih memahami apa yang saya lakukan salah). Kemungkinan besar bisa bermain golf lagi.
-18 byte terima kasih kepada @ceilingcat .
Penjelasan:
Coba di sini.
sumber
Pip , 28 byte
Cobalah online!
Penjelasan
Bagaimana langkah-langkahnya
34607
sebagai argumen:sumber
Pyth - 23 byte
Test Suite .
sumber
Haskell ,
106104 byteCobalah online!
sumber
R ,
153146 byteCobalah online!
Kadang-kadang, saya tidak tahu apakah saya hanya sampah di golf, atau jika R adalah ....Ini pasti saya, menyelamatkan 7 byte berkat pengguna2390246, yang mengingatkan saya pada cara lain untuk mengekstrak angka (yang saya sarankan sendiri) .Anda dapat menggantinya
strtoi
denganas.double
untuk mendapatkan18406718084351604
test case terakhir (yang salah); R hanya memiliki bilangan bulat 32-bit.sumber
character->int
ketika saya menelepon:
dan kemudianstrtoi
tetap menggunakannya !Perl 5 , 120 + 1 (
-a
) = 121 byteCobalah online!
sumber
Python 2 , 131 byte
Cobalah online!
sumber
05AB1E , 16 byte
Cobalah online atau verifikasi semua kasus uji .
Atau sebagai alternatif:
Penjelasan:
sumber
Burlesque , 39 byte
Cobalah online!
sumber