Diberikan daftar N
bilangan bulat, masing-masing dengan N
digit, mengeluarkan angka yang berbeda dari angka pertama karena digit pertama, angka kedua karena digit kedua, dll.
Contoh
Diberikan daftar ini:
1234
4815
1623
4211
Jumlah 2932
's digit pertama adalah berbeda dari jumlah pertama digit pertama, angka kedua adalah berbeda dari digit kedua nomor kedua ini, dll Oleh karena itu akan menjadi output yang valid.
Input
- Anda dapat mengambil daftar dan
N
sebagai input, atau hanya daftar jika Anda mau. - Setiap bilangan bulat dalam daftar harus memiliki digit sebanyak panjang daftar (
N
) - Angka tidak akan memiliki nol terkemuka
- Daftar input harus berisi angka dan bukan string.
- Anda dapat mengambil input sebagai argumen fungsi, melalui
STDIN
, atau yang serupa. - Anda dapat mengasumsikan bahwa daftar tidak akan lebih dari 10 elemen (dan tidak ada nomor dalam daftar akan lebih besar dari
2147483647
)
Keluaran
- Tidak cukup bahwa output tidak ada dalam daftar. Digit harus berbeda seperti yang dijelaskan di atas.
- Anda dapat menggunakan strategi pemilihan digit apa pun yang menghargai batasan berbagai digit.
- Jumlahnya tidak boleh memiliki angka nol di depan
- Anda dapat menampilkan nomor melalui
STDOUT
, mengembalikannya dari fungsi, dll.
Uji kasus
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
code-golf
number
number-theory
Fatalisasi
sumber
sumber
STDIN
ke integer sebelum parsing?STDIN
secara default adalah string ...Jawaban:
Jelly,
87 byte1 byte disimpan berkat Dennis.
Cobalah online!
Penjelasan
Mengubah setiap digit menjadi
1
, kecuali0
dan1
menjadi2
.sumber
CJam (
1514 bytes)Demo online
Terima kasih kepada Adnan untuk penghematan satu byte.
Pembedahan
sumber
i2%)
bisa juga49&)
, bekerja secara langsung dengan karakter daripada kode ASCII.Python 2,
4745 byteTerima kasih kepada @xnor karena bermain golf 2 byte!
Uji di Ideone .
Bagaimana itu bekerja
`x`
menghasilkan representasi string dari daftar x .Untuk test case pertama, ini memberikan string
[1::n+3]
mengambil setiap (n + 3) karakter th - di mana n adalah panjang x dimulai dengan yang kedua. Akuntansi 2 karakter untuk,
, kami mengambil digit pertama dari angka pertama, digit kedua dari angka kedua, dll.Kami sekarang mengambil nomor modulo 10 n ÷ 2 untuk memetakan digit pertama dalam kisaran [0, 4] .
Untuk 93579135 , kami mendapatkan 93579135% 50000000 = 43579135 .
Akhirnya, kami menambahkan 10 n ÷ 9 ke hasil terakhir, yang menambah - membungkus dari 9 menjadi 0 - semua digit dengan 1 (tanpa carry) atau 2 (dengan carry).
Untuk 43579135 , kita mendapatkan 43579135 + 11111111 = 54690246 .
sumber
MATL,
11109 byteHanya mengambil vektor kolom bilangan bulat sebagai input.
N
tidak disediakan.Cobalah secara Online
Penjelasan
sumber
2
: matl.tryitonline.net/...VXd9\QV!U
Pyth, 11 byte
Simpul sederhana, ubah setiap digit menjadi 1, kecuali 1 menjadi 2.
sumber
Q
dank
! Anda dapat menyimpan satu byte dengan selama transformasi digit:s.eh-12@`b
Retina,
393837Disimpan 1 byte, terima kasih Martin!
Membutuhkan linefeed tambahan di input.
Mendapat diagonal dan menerjemahkan 0 dan 2-9 ke 1 dan 1 ke 2.
Ide dasar untuk mendapatkan diagonal adalah untuk mendorong tangkapan untuk setiap baris di atas baris saat ini dan kemudian mengkonsumsi tangkapan untuk mencocokkan karakter, kemudian mempertahankan karakter berikutnya.
Cobalah online
sumber
J,
2622 bytePendekatan serupa dengan yang lain menggunakan metode
<= 1
danincrement
diagonal.Pemakaian
Hanya membutuhkan daftar bilangan bulat sebagai argumen.
sumber
Python 2, 54 byte
sumber
-~n
Java, 94 byte
Operasi numerik murni untuk kemenangan! :)
Input / output sampel:
Program lengkap (dengan kode ungolfed):
sumber
Java, 93 byte
Tidak disatukan
Keluaran
sumber
J, 37 byte
Mungkin bisa bermain golf, tetapi saya lupa jika ada perintah untuk "diagonal".
sumber
n
menggunakan input<list> (#:~#&10) <n>
. Diagonal pertama dapat ditemukan di(< 0 1) |: <list>
mana(< 0 1)
ada kotak untuk sumbu untuk memilih, menggunakan keduanya, dengan|:
Reng v.3.3, 60 byte
Bagi Reng, itu agak sederhana. Coba di sini! Input adalah daftar angka yang dipisahkan ruang.
1: init
k
adalah jumlah input (jumlah angka), dan kami mengurangi 1 dan mengembalikan untuk tahap loop.aií
mengambil semua input.r
membalikkan tumpukan untuk pemrosesan input.1ø
pergi ke baris berikutnya.2: lingkaran
1[
mengambil item teratas dari tumpukan dan ke tumpukan baru.å
membaginya menjadi digit.{$}
mendorong blok kode yang berisi operasi "drop"; ini diulangik
kali (k*
) dan blok kode dijatuhkan ($
.k1-#k
decrementsk
.)9(
Menempatkan9
di STOS, dan-
mengurangi TOS dari STOS.#o
menyimpan nomor ini dio
, dana$;
menjatuhkan semua anggota tumpukan.]
Menutup tumpukan induk.o
Menempatkano
kembali di tumpukan bagian atas; ini adalah digit yang kami simpan.)
memindahkannya ke bawah sehingga kami dapat melanjutkan perulangan kami.s
biasanya memeriksa non-input (yaitu, persamaan untuk-1
), tetapi kita dapat menggunakannya untuk keluar dari loop ketikak == -1
Jadis^
naik saatk == -1
.$
turunk
dari tumpukan, dan loop kami mulai lagi.3: final
<
mengarahkan pointer ke kiri, dan$
turunk
dari tumpukan.b
adalah cermin kiri, jadi kita masuk melaluinya, tetapi memantul kembali ketika memukul;
, cermin kondisi-tumpukan.!n
mencetak angka jika dan hanya jika kita ke kiri.~
mengakhiri program saat kita selesai mencetak.sumber
Mathematica 52 byte
Ini mengikuti pendekatan Peter Taylor dan lainnya (tanpa menggunakan kode Ascii).
Contoh
sumber
ClojureScript, 58 karakter
Persyaratan jenis membuat ini sedikit lebih lama dari yang diperlukan, dan
map-indexed
menjadi begitu banyak karakter tidak membantu.Seringkali kiriman saya juga Clojure yang valid, tetapi ini menggunakan beberapa kebocoran ClojureScript dengan JavaScript. Pengurangan angka dan string memaksa string ke angka - yaitu,
(- 9 "5")
sama dengan4
.sumber
PHP, 46/41/40 byte
Berbagai pemilih digit untuk perbandingan. Saya pikir "9-digit" akan menjadi yang terpendek, tetapi case khusus yang diperlukan untuk menjaga nol dari digit pertama akan membuatnya kewalahan.
Diberi argumen dari CLI:
sumber
Ruby, 21 byte
Program lengkap. Jalankan dengan
-n
bendera. Menggunakan pemetaan berikut:n -> n%2+1
.sumber
JavaScript (ES6), 41
Trik% 9 + 1 dipinjam dari jawaban Suever. Untuk sekali,
.reduce
ketukan.map
. Catatan,+=
operator digunakan untuk menghindari tanda kurung.sumber
Perl, 18 byte
Termasuk +1 untuk
-p
Jalankan dengan jalur input pada STDIN. Output adalah 1 kecuali 2 ketika diagonal adalah 1
cantor.pl
sumber
Pyth, 14 byte
Cobalah online!
sumber