Gagasan ini secara longgar didasarkan pada pesan obrolan @ TùxCräftîñg .
Lihatlah urutan contoh di bawah ini:
INVALID0
, INVALID1
, INVALID2
INVALID3
, INVALID4
...INVALID9
Setelah INVALID9
itu, berlangsung seperti ini:
INVALI0
, INVALI1
, INVALI2
, INVALI3
...INVALI9
Dan setelah INVALI9
itu, seperti ini:
INVAL0
, INVAL1
, INVAL2
, INVAL3
...INVAL9
Setelah, INVAL9
seperti ini:
INVA0
, INVA1
, INVA2
, INVA3
, ...INVA9
Perhatikan bagaimana kami terus menghapus surat dari kata INVALID
setiap kali.
Anda akan terus mengulangi ini sampai Anda mencapai satu huruf, yaitu surat I
:
I0
, I1
, I2
, I3
, I4
...I9
Sekarang, tugas Anda adalah, untuk mengambil input kata, dan menghasilkan urutan dari itu seperti contoh di atas. Kode Anda juga harus bekerja dengan huruf tunggal, dan dalam hal ini urutan yang dihasilkan akan lebih pendek.
Anda dapat memilih format input dan output yang Anda inginkan (dengan atau tanpa pemisah, seperti yang Anda inginkan), tetapi Anda harus menentukan yang mana yang telah Anda pilih.
Urutan harus dalam urutan yang ditentukan.
Kode terpendek, dalam byte, yang berhasil menyelesaikan tantangan ini, memenangkan tantangan.
Urutan lengkap dalam contoh di atas:
INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, INVA2, INVA3, INVA4, INVA5, INVA6, INVA7, INVA8, INVA9, INV0, INV1, INV2, INV3, INV4, INV5, INV6, INV7, INV8, INV9, IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, IN9, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
Contoh lain:
Input: MAYBE
(huruf besar dan kecil tidak masalah)
Keluaran:
MAYBE0, MAYBE1, MAYBE2, MAYBE3, MAYBE4, MAYBE5, MAYBE6, MAYBE7, MAYBE8, MAYBE9, MAYB0, MAYB1, MAYB2, MAYB3, MAYB4, MAYB5, MAYB6, MAYB7, MAYB8, MAYB9, MAY0, MAY1, MAY2, MAY3, MAY4, MAY5, MAY6, MAY7, MAY8, MAY9, MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, M0, M1, M2, M3, M4, M5, M6, M7, M8, M9
Memasukkan: AFTER
Keluaran:
AFTER0, AFTER1, AFTER2, AFTER3, AFTER4, AFTER5, AFTER6, AFTER7, AFTER8, AFTER9, AFTE0, AFTE1, AFTE2, AFTE3, AFTE4, AFTE5, AFTE6, AFTE7, AFTE8, AFTE9, AFT0, AFT1, AFT2, AFT3, AFT4, AFT5, AFT6, AFT7, AFT8, AFT9, AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7, AF8, AF9, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
Memasukkan: WHAT ARE YOU DOING
WHAT ARE YOU DOING0, WHAT ARE YOU DOING1, WHAT ARE YOU DOING2, WHAT ARE YOU DOING3, WHAT ARE YOU DOING4, WHAT ARE YOU DOING5, WHAT ARE YOU DOING6, WHAT ARE YOU DOING7, WHAT ARE YOU DOING8, WHAT ARE YOU DOING9, WHAT ARE YOU DOIN0, WHAT ARE YOU DOIN1, WHAT ARE YOU DOIN2, WHAT ARE YOU DOIN3, WHAT ARE YOU DOIN4, WHAT ARE YOU DOIN5, WHAT ARE YOU DOIN6, WHAT ARE YOU DOIN7, WHAT ARE YOU DOIN8, WHAT ARE YOU DOIN9, WHAT ARE YOU DOI0, WHAT ARE YOU DOI1, WHAT ARE YOU DOI2, WHAT ARE YOU DOI3, WHAT ARE YOU DOI4, WHAT ARE YOU DOI5, WHAT ARE YOU DOI6, WHAT ARE YOU DOI7, WHAT ARE YOU DOI8, WHAT ARE YOU DOI9, WHAT ARE YOU DO0, WHAT ARE YOU DO1, WHAT ARE YOU DO2, WHAT ARE YOU DO3, WHAT ARE YOU DO4, WHAT ARE YOU DO5, WHAT ARE YOU DO6, WHAT ARE YOU DO7, WHAT ARE YOU DO8, WHAT ARE YOU DO9, WHAT ARE YOU D0, WHAT ARE YOU D1, WHAT ARE YOU D2, WHAT ARE YOU D3, WHAT ARE YOU D4, WHAT ARE YOU D5, WHAT ARE YOU D6, WHAT ARE YOU D7, WHAT ARE YOU D8, WHAT ARE YOU D9, WHAT ARE YOU 0, WHAT ARE YOU 1, WHAT ARE YOU 2, WHAT ARE YOU 3, WHAT ARE YOU 4, WHAT ARE YOU 5, WHAT ARE YOU 6, WHAT ARE YOU 7, WHAT ARE YOU 8, WHAT ARE YOU 9, WHAT ARE YOU0, WHAT ARE YOU1, WHAT ARE YOU2, WHAT ARE YOU3, WHAT ARE YOU4, WHAT ARE YOU5, WHAT ARE YOU6, WHAT ARE YOU7, WHAT ARE YOU8, WHAT ARE YOU9, WHAT ARE YO0, WHAT ARE YO1, WHAT ARE YO2, WHAT ARE YO3, WHAT ARE YO4, WHAT ARE YO5, WHAT ARE YO6, WHAT ARE YO7, WHAT ARE YO8, WHAT ARE YO9, WHAT ARE Y0, WHAT ARE Y1, WHAT ARE Y2, WHAT ARE Y3, WHAT ARE Y4, WHAT ARE Y5, WHAT ARE Y6, WHAT ARE Y7, WHAT ARE Y8, WHAT ARE Y9, WHAT ARE 0, WHAT ARE 1, WHAT ARE 2, WHAT ARE 3, WHAT ARE 4, WHAT ARE 5, WHAT ARE 6, WHAT ARE 7, WHAT ARE 8, WHAT ARE 9, WHAT ARE0, WHAT ARE1, WHAT ARE2, WHAT ARE3, WHAT ARE4, WHAT ARE5, WHAT ARE6, WHAT ARE7, WHAT ARE8, WHAT ARE9, WHAT AR0, WHAT AR1, WHAT AR2, WHAT AR3, WHAT AR4, WHAT AR5, WHAT AR6, WHAT AR7, WHAT AR8, WHAT AR9, WHAT A0, WHAT A1, WHAT A2, WHAT A3, WHAT A4, WHAT A5, WHAT A6, WHAT A7, WHAT A8, WHAT A9, WHAT 0, WHAT 1, WHAT 2, WHAT 3, WHAT 4, WHAT 5, WHAT 6, WHAT 7, WHAT 8, WHAT 9, WHAT0, WHAT1, WHAT2, WHAT3, WHAT4, WHAT5, WHAT6, WHAT7, WHAT8, WHAT9, WHA0, WHA1, WHA2, WHA3, WHA4, WHA5, WHA6, WHA7, WHA8, WHA9, WH0, WH1, WH2, WH3, WH4, WH5, WH6, WH7, WH8, WH9, W0, W1, W2, W3, W4, W5, W6, W7, W8, W9
Papan peringkat
sumber
INVALID0INVALID1INVALID2
) format output yang valid?Jawaban:
Jelly , 7 byte
Cobalah online!
Bagaimana itu bekerja
sumber
05AB1E ,
108 bytePenjelasan
Cobalah online!
Disimpan 2 byte berkat Adnan
sumber
.p
setara denganŒ¹g£
:).Javascript (ES6),
5347 byteDisimpan 6 byte berkat Peanut & Neil
Output: semua kata sebagai string tunggal tanpa pemisah.
Contoh
sumber
s&&
alih-alihs?
...:''
?+''
bagian dari kode terakhir yang saya posting. Coba di sini!Perl, 29 byte
Termasuk +1 untuk
-n
Jalankan dengan input pada STDIN:
Hanya kode:
sumber
^
... Sepertinya itu melakukan pekerjaan yang sama(*FAIL)
, tapi saya tidak mengerti mengapa. Bisakah Anda jelaskan?^
menyebabkan pertandingan gagal yang memaksa regex sebelum itu untuk mundur^
... Maksud saya dengan contoh Anda, mengapa,/
tidak bekerja, tetapi^/
tidak?^
berada di luar pemahaman pengoptimal saat ini. Salah satu dari dua perilaku itu mungkin berubah di masa depan ..Haskell,
4743 byteContoh penggunaan:
f "IN"
->["IN0","IN1","IN2","IN3","IN4","IN5","IN6","IN7","IN8","IN9","I0","I1","I2","I3","I4","I5","I6","I7","I8","I9"]
.Pendekatan rekursif sederhana. Tambahkan setiap digit ke kata dan tambahkan panggilan rekursif dengan huruf terakhir dihapus.
sumber
Pyth, 9 byte
Sebuah program yang mengambil input dari string yang dikutip pada STDIN dan mencetak daftar string.
Cobalah online
Bagaimana itu bekerja
sumber
Pip ,
1211 byteMengambil kata sebagai argumen cmdline. Output tanpa pemisah.
Cobalah online!
Penjelasan:
sumber
V , 20 byte
Cobalah online!
Karena ini berisi karakter yang tidak dapat dicetak, berikut adalah format yang dapat dibaca:
Dan inilah hexdump:
Penjelasan:
sumber
Bash + coreutils, 54 byte:
Cukup loop melalui urutan
[Length of Input,1]
dan selama setiap iterasi, output kata input dengan panjang9
waktu nilai iterasi saat ini dengan setiap angka[0,9]
ditambahkan ke masing-masing9
salinan kata. Jalankan di dalam file dan kata atau kata dalam tanda kutip, yaitubash A.sh "blah blah blah"
.sumber
Floroid -
50 4731 byteSaat ini menggunakan metode yang sama seperti @JonathanAllan menggunakan metode rekursif keduanya.
Sudah bisa ini jika aku akan dilaksanakan produk Cartesian lebih hati-hati dalam bahasa:
Bc:ca([c]+[c[:-a-1]KaIw(Z(c)-1)],hd)
.Testcases
sumber
(lambdabot) Haskell - 49 byte
Lambdabot adalah bot IRC di #haskell; itu secara otomatis mengimpor banyak modul, termasuk di
Data.List
manainits
tinggal. Dan karena suatu bahasa ditentukan oleh implementasinya, saya dapat memanggil hasdd lambdabot ini dan tidak membayar byte untuk impor.Haskell Biasa:
sumber
tails
berhasil?INVALID, NVALID, VALID, ALID, LID, ID, D,
braingasm ,
34333128 bytePada kondisi saat ini, braingasm hanya dimuliakan brainfuck dengan beberapa fitur tambahan ( seperti, 3? ). Saya telah menghabiskan sebagian besar waktu pengembangan menjadikannya "giat" mungkin, alih-alih menambahkan fitur ...
Bagaimanapun, kode berikut harus bekerja dengan snapshot pengembangan terbaru. Dibutuhkan input baris-kurang dari stdin, like
$ echo -n INVALID | braingasm invalid.bg
, dan print ke stdout.Penjelasan:
sunting: Tampaknya tidak apa-apa untuk
melewatipenggunaan string kosong sebagai pembatassumber
Python 2,
5355 byte+2 byte: menyatakan f diperlukan dengan rekursi (seperti yang ditunjukkan oleh @Dructible Semangka)
Berulang ke string kosong (menghasilkan daftar kosong), memotong karakter pada suatu waktu, dan menambahkan dengan daftar sepuluh string saat ini dengan angka 0-9 ditambahkan ke masing-masing.
Uji ideone
Python 3,
5456 byteUji ideone
sumber
f=
bagian (sedikit seperti bagaimana Anda tidak dapat mengasumsikan variabel memiliki nilai)Swift 3, 150 Bytes
Bukan solusi terpendek, tetapi tidak buruk untuk Swift
Uji ini secara online di IBM Swift Sandbox
Tidak disatukan
sumber
Ruby, 51
Tidak ada pemisah yang digunakan.
Tambahkan berikut ini
i%10
untuk pemisah:,$/
untuk baris baru,,?|
untuk|
(serupa untuk karakter yang dapat dicetak),,' '
untuk ruangDalam program uji
sumber
PHP,
6456 bytesumber
Haskell,
4946 bytesumber
f=(>>=(
peta['0'..'9']).snoc).tail.reverse.inits
. 3 dengan menggunakan fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
reverse.tail.inits
bukantail.reverse.inits
Anda juga mendapatkan output yang benar;)tail
, saya kira maksud sayainit
, tetapi menukarnya dengan bekerja dengan baik :-)C #,
107102 BytesTidak disatukan
sumber
k++
for-loop dan menambahkan++
setelah penggunaank
, jadi seperti ini:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k+++",";i=i.Remove(i.Length-1);}return o;}
Juga, koma tidak diperlukan oleh tantangan OP, meskipun jika Anda mau, tentu saja Anda dapat menyimpannya. Tanpa ini:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k++;i=i.Remove(i.Length-1);}return o;}
Ruby,
9085 byteJika string kosong, kembalikan array kosong. Jika tidak, buat string + nomor di setiap nomor dari 0 hingga 9, dan panggil
f
dengan string tanpa karakter terakhir.Disimpan 5 byte berkat @LevelRiverSt
sumber
def
danend
. Anda bisa membuat lambda sehingga Anda bahkan tidak perlu memberinya nama, asalkan Anda menugaskan variabel dan menyebutnya dengan argumen dalam tanda kurung.f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
lebih pendek 5 byte.->
sintaksnyaf=->s{s==""&&(return[]);(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
menyimpan 4 byte lagi. Ruby mengevaluasi ekspresi boolean dari kiri ke kanan dan tidak mengevaluasi istilah selanjutnya kecuali diperlukan untuk menentukan hasilnya. Teknik bermain golf yang sama dapat digunakan dalam C. Saya tidak tahu mengapa diperlukan()
sekitarreturn[]
dalam hal ini.Perl 6, 32 = 31 byte +1 untuk -p
Saya tidak terlalu mahir dengan Perl 6, jadi mungkin ada cara untuk mengurangi itu lebih banyak.
Ini digunakan
-p
untuk mengevaluasi sekali untuk setiap jalur input. Garis ditempatkan ke dalam$_
dan setelah program berjalan, ia akan mencetak$_
.Ini
(~$_,*.chop...^!*)
adalah daftar di mana elemen pertama adalah~
input*.chop
string ( ), setiap elemen berikutnya diperoleh dengan memotong karakter terakhir dari karakter sebelumnya ( ) dan yang berlanjut sampai string kosong (!*
), tidak termasuk case string kosong (^
in...^
) .X~
menghasilkan semua pasangan daftar di sebelah kiri dan kanan, menggunakan operasi yang ditentukan, dalam hal ini, rangkaian string (~
) pada mereka.^10
adalah daftar 0, 1, ... 9.Akhirnya, daftar dirangkai lagi dengan
~
, memberikan kata-kata yang diperlukan dengan spasi sebagai pemisah.sumber
PowerShell v2 +, 60 byte
Loop dari panjang string input ke
1
. Setiap iterasi, atur helper$i
sama dengan minus angka saat ini1
. Ini diperlukan karena.length
jumlah total karakter, tetapi pengindeksan string berbasis 0. Kemudian, kita loop dari0
ke9
. Setiap loop dalam, mengiris string input$n
berdasarkan nilai loop luar kami,-join
itu kembali menjadi string, dan string-digabungkan pada jumlah loop dalam. Setiap hasil loop individu ditempatkan pada pipa, dan output tersirat pada penyelesaian program.sumber
Dyalog APL ,
1411 byteMengembalikan daftar string.
,
listify (buat tabel menjadi daftar)⎕D
semua digit∘.,⍨
ditambahkan ke semua (yaitu membuat semua kombinasi dengan)⌽
daftar terbalik dari,\
gabungan kumulatif dari⍞
input teksTryAPL online!
sumber
Groovy (58 Bytes)
Tidak tahu mengapa saya bahkan repot-repot memposting jawaban Groovy ... Ukuran minimum yang disyaratkan untuk golf Groovy adalah 2 berdasarkan kebutuhan penutupan, jadi jawaban terbaik di sini adalah dua kali lipat ukuran minimum saya.
Cobalah di sini: https://groovyconsole.appspot.com/script/5148433803378688
sumber
Batch,
8583 bytesumber
Java 7,
10598 byte-7 byte terima kasih kepada @Poke .
Tidak Terkumpul :
Kode uji:
Coba di sini.
Keluaran:
sumber
void c(String s){for(int x=0,l=s.length();x<l*10;)System.out.print(s.substring(0,l-x/10)+x++%10);}
Python 3, 62 byte
Tidak menggunakan rekursi seperti jawaban lainnya.
Alasan "" di
x+" "
dalamnya ada: -0 masih nol, dan jadi kami tidak bisa menggunakan notasi minus untuk mendapatkan semua string dengan cara ini sehingga yang tertinggi yang bisa kami tuju adalah minus satu, jadi "" adalah untuk mengisi string,sumber
C,
72, 70 byteMengambil string sebagai pasangan penunjuk / ukuran. Tes utama:
sumber
Retina , 37 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Penjelasan
Dapatkan semua awalan input dengan mencocokkan dan mencetak semua kecocokan yang tumpang tindih dari kanan.
Tambahkan a
0
ke setiap baris.The
{
menunjukkan bahwa tiga tahap yang tersisa dieksekusi dalam satu lingkaran sampai mereka gagal untuk mengubah string. The%
mengatakan bahwa mereka harus diterapkan untuk setiap baris secara terpisah.Tahap itu sendiri hanya menduplikasi baris terakhir (awalnya ini hanya baris ini dijalankan, tetapi setiap iterasi dari tiga tahap menambahkan baris lain).
Tambahkan angka di baris terakhir dengan melakukan penggantian karakter berikut:
Dan akhirnya:
Pertahankan hanya 10 baris pertama, sehingga kami menghapus baris yang baru saja kami tambahkan setelahnya
INPUT9
.sumber
Scala,
7370 byteSebut saja seperti
f("INVALID")
. Mengembalikan Urutan Karakter.Penjelasan
Solusi alternatif, 73 byte
mendefinisikan fungsi anonim. Untuk menyebutnya, tulis
dan menyebutnya seperti ini
Ini mengembalikan urutan string, yang akan terlihat seperti ini ketika dicetak:
Penjelasan
sumber
CJam,
2928 bytePenjelasan:
Cobalah online
sumber