Diberikan string angka atau integer sebagai input, Anda harus mengindeksnya.
Ini adalah bagaimana Anda memodifikasi input. Kami akan gunakan 30043376111
sebagai contoh:
Pertama, temukan jumlah indeks dari setiap kemunculan digit masing-masing:
0: 1 + 2 = 3
1: 8 + 9 + 10 = 27
3: 0 + 4 + 5 = 9
4: 3
6: 7
7: 6
Kemudian, buat integer atau string baru di mana digit di atas sesuai dengan urutan jumlah indeksnya. Jika beberapa digit menghasilkan jumlah yang sama, digit yang lebih kecil muncul sebelum yang lebih besar:
047631
Terakhir, hapus semua nol terkemuka, dan kembalikan atau cetak hasilnya:
47631
Anda harus menulis program atau fungsi yang mengembalikan atau mencetak input yang diindeks.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Lebih banyak kasus uji dapat ditambahkan jika diminta.
Jawaban:
k, 7 byte
balasan online
Menyandingkan fungsi adalah komposisi, jadi tidak ada parameter atau input eksplisit yang diperlukan.
sumber
Haskell, 69 byte
Mengambil string, mengembalikan nomor. Contoh penggunaan:
f "30043376111"
->47631
. Cobalah online!Cukup lurus ke depan: urutkan digit dari string input terlebih dahulu pada jumlah indeks mereka dan oleh digit itu sendiri (-> pasang (jumlah ..., d)), hapus duplikat dan konversi ke nomor untuk menghapus memimpin
0
. The0+
diperlukan untuk mendapatkan jenis yang tepat.sumber
Ditumpuk , 59 byte
Cobalah online!
Ini membutuhkan string karakter (seperti
$'1231231'
) sebagai input dari atas tumpukan, dan meninggalkan string di tumpukan.Penjelasan
Sekarang kita dibiarkan dengan pasangan (chr, jumlah indeks).
sumber
05AB1E ,
2928 byte-1 Terima kasih kepada Riley
Cobalah online!
sumber
TFN
untuk9Ývy
JavaScript (ES6), 98 byte
Mengambil string
n
, lalu mengubahnya menjadi Set dan kemudian ke array angka yang berbeda. Urutkan digit-digit ini dalam urutan numerik, lalu urutkan kembali sesuai dengan jumlah indeks. Menggabungkan Array yang diurutkan ke sebuah String, dan akhirnya mengkonversi ke Nomor untuk menghapus nol terkemuka.sumber
.sort()
, input 1332 menghasilkan 132 bukannya 123.PowerShell , 88 byte
Cobalah online!
Atur hashtable kosong
$a
, lalu masukkan input$args
sebagaichar
array, dan loop melalui setiap elemen|%{...}
. Kami menetapkan nilai pada "elemen saat ini"$a
untuk ditambahkan oleh$i++
, untuk menghitung indeks input kami. Misalnya, untuk input300433766111
, loop pertama$a[3]
didapat+=0
; loop berikutnya,$a[0]
mendapat+=1
; dll.Selanjutnya, kita perlu
Sort
hashtable kita. Sayangnya, karena kekhasan bahasa internal, ini berarti kita perlu$a.GetEnumerator()
sebelum kita bisa melakukan penyortiran yang sebenarnya. Kami urutkan berdasarkanvalue
, kemudian denganname
, untuk memenuhi persyaratan digit yang lebih kecil, disortir terlebih dahulu. Kami menariknya.Name
(dalam urutan diurutkan),-join
mereka bersama-sama menjadi string, dan melemparkan string itu sebagai int+
untuk menghapus nol terkemuka. Yang tersisa pada pipa dan output tersirat.sumber
Jelly , 10 byte
Cobalah online!
Mengambil dan mengembalikan bilangan bulat.
Bagaimana?
sumber
PHP, 103 Bytes
sumber
Python 2,
10292 byteTerima kasih kepada Ben Frankel karena telah menghemat 10 byte!
Cobalah secara Online!
Mengambil input sebagai string dan menghasilkan integer. Menggunakan kamus untuk menyimpan jumlah indeks, lalu mengurutkannya berdasarkan nilai. Konversi ke integer untuk menghapus nol terkemuka karena
int
lebih pendek dari.lsplit('0')
.sumber
a[j]=a.get(j,0)+i
menghemat 10 byte.Python 3.5,
8685 byteTerima kasih @Ben Frankel karena telah menyimpan byte:
Kode lama:
Fungsi anonim mengambil string angka dan mengembalikan integer
sumber
sum(i*(c==d)for
menghemat 1 byte.Pip , 18 byte
Mengambil nomor sebagai argumen baris perintah. Cobalah online!
Penjelasan
sumber
C #, 245 byte
Tidak senang dengan berapa lama itu berakhir dan mungkin bisa lebih pendek tapi inilah yang akhirnya saya lakukan.
sumber
Perl 6 ,
65 6152 byteCobalah
Cobalah
Cobalah
Diperluas
sumber
Scala,
123104 byteContoh (menggunakan Scala REPL):
Cukup mudah, menggunakan tuple sebagai predikat pengurutan untuk jenis sekunder.
sumber
Pyth, 9 byte
Cobalah online
Mengambil serangkaian digit sebagai input.
sumber