Inval Invalid Invalid

27

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 INVALID9itu, berlangsung seperti ini:

INVALI0, INVALI1, INVALI2, INVALI3...INVALI9

Dan setelah INVALI9itu, seperti ini:

INVAL0, INVAL1, INVAL2, INVAL3...INVAL9

Setelah, INVAL9seperti ini:

INVA0, INVA1, INVA2, INVA3, ...INVA9

Perhatikan bagaimana kami terus menghapus surat dari kata INVALIDsetiap 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

Buffer Over Read
sumber
1
Bisakah Anda memposting urutan penuh sekaligus? Mungkin dengan beberapa sampel lagi? Juga, apa yang mungkin berisi input?
DJMcMayhem
1
Apakah kurangnya pemisah (misalnya INVALID0INVALID1INVALID2) format output yang valid?
DLosc
@Docosc Ya, benar.
Buffer Over Read
3
Asal tahu saja, umumnya tidak disarankan untuk menerima jawaban begitu cepat setelah memposting tantangan. Menerima terlalu dini dapat mencegah pengguna memposting jawaban baru. Itu bukan untuk mengatakan Anda tidak dapat menyimpan jawaban yang diterima, tetapi saya mendorong Anda untuk menunggu lebih lama di waktu berikutnya.
DJMcMayhem
@DJMcMayhem Oke!
Buffer Over Read

Jawaban:

5

Jelly , 7 byte

ḣJṚp⁵Ḷ¤

Cobalah online!

Bagaimana itu bekerja

ḣJṚp⁵Ḷ¤  Main link. Argument: s (string)

 J       Yield all (1-based) indices of s.
ḣ        Head; for each index k, take the first k characters of s.
  Ṛ      Reverse the result.
      ¤  Combine the two links to the left into a niladic chain.
    ⁵      Yield 10.
     Ḷ     Unlength; yield [0, ..., 9].
   p     Return the Cartesian product of the prefixes and the range.
         (implicit) Print the Cartesian product without separators.
Dennis
sumber
6
7 byte. Saya hanya ingin tahu bagaimana seseorang datang dengan ide membuat kode yang tepat ini bekerja dengan kode golf.
haykam
8

05AB1E , 10 8 byte

.pžmâ€JR

Penjelasan

.p        # get prefixes of input
  žmâ     # cartesian product with [9..0]
     €J   # join each
       R  # reverse

Cobalah online!

Disimpan 2 byte berkat Adnan

Emigna
sumber
1
.psetara dengan Œ¹g£:).
Adnan
1
@ Adnan: Serius, bagaimana saya bisa melupakan itu lagi! Terima kasih! Sepertinya saya harus istirahat: P
Emigna
8

Javascript (ES6), 53 47 byte

f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)

Disimpan 6 byte berkat Peanut & Neil

Output: semua kata sebagai string tunggal tanpa pemisah.

Contoh

var f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)

document.getElementsByTagName('div')[0].innerHTML = f('INVALID')
<div style="word-wrap:break-word"></div>

Arnauld
sumber
Menghemat satu byte, menguranginya menjadi 52 byte , untuk tidak menggunakan pemisah (yang diizinkan) dengan tidak menambahkan spasi di antara item dalam pola. Coba di sini!
haykam
Bisakah Anda tidak menggunakan s&&alih-alih s?... :''?
Neil
Anda juga dapat menguranginya menjadi 49 byte dengan menghapus +''bagian dari kode terakhir yang saya posting. Coba di sini!
haykam
Saya menggunakan Firefox, dan teksnya tidak dipisahkan oleh spasi. Itu tidak diperlukan untuk pertanyaan, tapi saya pikir saya akan memberi tahu Anda.
Buffer Over Read
1
@TheBitByte - Buruk saya. Tidak ada pemisah lagi (seperti yang disarankan oleh Kacang) tetapi saya lupa untuk memperbarui jawaban saya sesuai. Terima kasih telah memperhatikan!
Arnauld
7

Perl, 29 byte

Termasuk +1 untuk -n

Jalankan dengan input pada STDIN:

perl -nE '/^.+(?{map{say$&.$_}0..9})^/' <<< PERL

Hanya kode:

/^.+(?{map{say$&.$_}0..9})^/
Ton Hospel
sumber
Kode yang sangat bagus Saya tidak mengerti itu terakhir ^... Sepertinya itu melakukan pekerjaan yang sama (*FAIL), tapi saya tidak mengerti mengapa. Bisakah Anda jelaskan?
Dada
@ Dada Ya, memaksakan kegagalan adalah persis seperti apa fungsinya. Karena itu cocok dengan setidaknya 1 karakter dari awal string, itu tidak bisa di awal lagi sehingga ^menyebabkan pertandingan gagal yang memaksa regex sebelum itu untuk mundur
Ton Hospel
Ok terima kasih. Saya mengharapkannya bekerja dengan karakter apa pun yang tidak ada dalam input, tetapi tampaknya hanya bekerja dengan ^... Maksud saya dengan contoh Anda, mengapa ,/tidak bekerja, tetapi ^/tidak?
Dada
Ini adalah detail implementasi dari pengoptimal regex .. Jika Anda memasukkan karakter tertentu tidak dalam string, cukup cerdas untuk mengetahui bahwa regex tidak akan pernah cocok dan pencocokan regex yang sebenarnya bahkan belum dimulai. ^berada di luar pemahaman pengoptimal saat ini. Salah satu dari dua perilaku itu mungkin berubah di masa depan ..
Ton Hospel
Ok saya mengerti, saya pikir itu sesuatu seperti itu tetapi tidak yakin. Terima kasih banyak
Dada
6

Haskell, 47 43 byte

f""=[]
f x=map((x++).show)[0..9]++f(init x)

Contoh 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.

nimi
sumber
6

Pyth, 9 byte

sM*_._QUT

Sebuah program yang mengambil input dari string yang dikutip pada STDIN dan mencetak daftar string.

Cobalah online

Bagaimana itu bekerja

sM*_._QUT  Program. Input: Q
    ._     List of prefixes of Q
   _       Reverse
       UT  Unary range up to 10, yielding [0, 1, 2, ..., 9]
  *        Cartesian product of the above two
sM         Map concatenate over the above
           Implicitly print
TheBikingViking
sumber
5

Pip , 12 11 byte

Mengambil kata sebagai argumen cmdline. Output tanpa pemisah.

Wa&Oa.,tDQa

Cobalah online!

Penjelasan:

             Implicit: a = 1st cmdline arg, t = 10
Wa           While a (i.e. while it's not the empty string)
   Oa.,t     Concatenate range(10) to a and output
               (Pip concatenates a string to a range itemwise)
  &          The output operation is &-ed to the loop condition to save on curly braces
        DQa  Dequeue from a, removing the final character on each iteration
DLosc
sumber
4

V , 20 byte

A0òYpó.10/0/e
$hòd

Cobalah online!

Karena ini berisi karakter yang tidak dapat dicetak, berikut adalah format yang dapat dibaca:

A0<esc>òYp<C-a>ó.10/0/e
$hòd

Dan inilah hexdump:

0000000: 4130 1bf2 5970 01f3 2e31 302f 302f 650a  A0..Yp...10/0/e.
0000010: 2468 f264                                $h.d

Penjelasan:

A0<esc>                 "Append a '0' to the input
       ò                "Recursively:
        Yp              "  Yank this line and paste it
          <C-a>         "  Increment the first number on this line
               ó        "  Substitute:
                .10     "    Any single character followed by '10'
                   /0   "    Replace it with a '0'
                     /e "    Ignore errors if this is not found
$h                      "  Move to the end of the end of this line than back one.
                        "  This makes it so the loop ends once there is only one
                        "  character on this line.
  ò                     "End the loop
   d                    "Delete a line (since we create one too many)  
DJMcMayhem
sumber
4

Bash + coreutils, 54 byte:

for i in `seq ${#1} 1`;{ printf "${1:0:i}%s " {0..9};}

Cukup loop melalui urutan [Length of Input,1]dan selama setiap iterasi, output kata input dengan panjang 9waktu nilai iterasi saat ini dengan setiap angka [0,9]ditambahkan ke masing-masing 9salinan kata. Jalankan di dalam file dan kata atau kata dalam tanda kutip, yaitu bash A.sh "blah blah blah".

R. Kap
sumber
4

Floroid - 50 47 31 byte

f=Ba:aM[a+b KbIhd]+f(a[:-1])H[]

Saat 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

Input: ABC
Output: ['ABC0', 'ABC1', 'ABC2', 'ABC3', 'ABC4', 'ABC5', 'ABC6', 'ABC7', 'ABC8', 'ABC9', 'AB0', 'AB1', 'AB2', 'AB3', 'AB4', 'AB5', 'AB6', 'AB7', 'AB8', 'AB9', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9']

Input: M
Output: ['M0', 'M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9']
Yytsi
sumber
3

(lambdabot) Haskell - 49 byte

f q=[x++show n|x<-reverse.tail$inits q,n<-[0..9]]

Lambdabot adalah bot IRC di #haskell; itu secara otomatis mengimpor banyak modul, termasuk di Data.Listmana initstinggal. Dan karena suatu bahasa ditentukan oleh implementasinya, saya dapat memanggil hasdd lambdabot ini dan tidak membayar byte untuk impor.

Haskell Biasa:

import Data.List
f q=[x++show n|x<-reverse.tail$inits q,n<-[0..9]]
BlackCap
sumber
Apakah Anda yakin tailsberhasil?
Bergi
@Bergi, benar-benar lupa tentang impor, terima kasih telah menunjukkannya :)
BlackCap
Saya tidak bermaksud impor, saya maksudkan itu menghasilkan output yang salah:INVALID, NVALID, VALID, ALID, LID, ID, D,
Bergi
@Bergi, Astaga! Kamu benar. 8 byte lagi untukku
BlackCap
3

braingasm , 34 33 31 28 byte

Pada 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.

,[>,]#[48+10[#<[.>]<+]0,<0,]

Penjelasan:

,[>,]                 lay down the input on the tape
#[                    (length of input - 1) times do
  48+                   add '0' at the end of the tape
  10[                   10 times do
     #<[.>]               move to start of tape, then print the tape
     <+                   increase the number at the end of the tape
  ]                     done printing current word with 0 through 9
  0,                    erase the number by writing 0 onto it
  <0,                   likewise, remove one character
]                     done

sunting: Tampaknya tidak apa-apa untuk melewati penggunaan string kosong sebagai pembatas

daniero
sumber
2

Python 2, 53 55 byte

+2 byte: menyatakan f diperlukan dengan rekursi (seperti yang ditunjukkan oleh @Dructible Semangka)

f=lambda s:s and[s+`n`for n in range(10)]+f(s[:-1])or[]

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, 54 56 byte

f=lambda s:s and[s+n for n in'0123456789']+f(s[:-1])or[]

Uji ideone

Jonathan Allan
sumber
2
Saya cukup yakin bahwa jika lambda Anda menyertakan panggilan untuk dirinya sendiri, Anda harus memiliki f=bagian (sedikit seperti bagaimana Anda tidak dapat mengasumsikan variabel memiliki nilai)
Destructible Lemon
2

Swift 3, 150 Bytes

Bukan solusi terpendek, tetapi tidak buruk untuk Swift

func a(s: String){var c=s.characters,r="";while(c.count>0){var k = "";for d in c{k+=String(d)};for i in 0...9{r+="\(k)\(i) "};c.removeLast()};print(r);}

Uji ini secara online di IBM Swift Sandbox

Tidak disatukan

func a(s s: String){
    var c = s.characters, r = ""
    while(c.count > 0){
        var k = ""
        for d in c{
            k+=String(d)
        }
        for i in 0...9{
            r+="\(k)\(i) "
        }
        c.removeLast()
    }
    print(r)
}
Jojodmo
sumber
2

Ruby, 51

Tidak ada pemisah yang digunakan.

->s{(10*n=s.size).times{|i|print s[0,n-i/10],i%10}}

Tambahkan berikut ini i%10untuk pemisah:

,$/untuk baris baru, ,?|untuk |(serupa untuk karakter yang dapat dicetak), ,' 'untuk ruang

Dalam program uji

f=->s{(10*n=s.size).times{|i|print s[0,n-i/10],i%10}}

f[gets.chomp]
Level River St
sumber
2

PHP, 64 56 byte

for($i=9;$a=substr($argv[1].a,0,-++$i/10);)echo$a.$i%10;

for(;$a=substr($argv[1].a,$i=0,-++$l);)for(;$i<10;)echo $a.$i++;

Crypto
sumber
Cara yang bagus untuk mencegah for-loop yang lain. Anda dapat menyimpan byte dengan menghapus spasi setelah echo
aross
2

Haskell, 49 46 byte

f=(>>=(<$>['0'..'9']).snoc).reverse.tail.inits
Bergi
sumber
Anda dapat menyimpan byte dengan menempelkan peta f=(>>=(peta ['0'..'9']).snoc).tail.reverse.inits. 3 dengan menggunakan fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
BlackCap
Oh, dan jika Anda melakukannya reverse.tail.initsbukan tail.reverse.initsAnda juga mendapatkan output yang benar;)
BlackCap
@ BlackCap: Terima kasih, saya benar-benar bertanya-tanya mengapa tidak ada membalik (f) peta di perpustakaan standar, tetapi tidak memikirkan bagian. Mengenai tail, saya kira maksud saya init, tetapi menukarnya dengan bekerja dengan baik :-)
Bergi
2

C #, 107 102 Bytes

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;}

Tidak disatukan

string f(string i)
{
   string o = "";
   while(i != "")
   {
      for (int k = 0; k <= 9;)
         o += i + k++;
      i = i.Remove(i.Length - 1);
   }
   return o;
}
Omer Kahoot
sumber
1
Anda dapat golf sedikit dengan menghapus k++for-loop dan menambahkan ++setelah penggunaan k, 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;}
Kevin Cruijssen
2

Ruby, 90 85 byte

f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}

Jika string kosong, kembalikan array kosong. Jika tidak, buat string + nomor di setiap nomor dari 0 hingga 9, dan panggilf dengan string tanpa karakter terakhir.

Disimpan 5 byte berkat @LevelRiverSt

TuxCrafting
sumber
Saya kira Anda belum pernah bermain golf di Ruby sebelumnya. Periksa jawaban saya untuk pertanyaan ini (atau banyak jawaban Ruby lain di situs ini) untuk melihat cara Golfy untuk mendefinisikan fungsi tanpa termasuk boros mereka defdan end. Anda bisa membuat lambda sehingga Anda bahkan tidak perlu memberinya nama, asalkan Anda menugaskan variabel dan menyebutnya dengan argumen dalam tanda kurung.
Level River St
@LevelRiverSt Menggunakan lambda adalah 1 byte lebih lama
TuxCrafting
Ok, saya melewatkan fakta bahwa Anda perlu memberi nama karena itu bersifat rekursif. Namun masih 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.
Level River St
@LevelRiverSt Oh, saya tidak tahu tentang ->sintaksnya
TuxCrafting
f=->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 ()sekitar return[]dalam hal ini.
Level River St
2

Perl 6, 32 = 31 byte +1 untuk -p

Saya tidak terlalu mahir dengan Perl 6, jadi mungkin ada cara untuk mengurangi itu lebih banyak.

$_= ~((~$_,*.chop...^!*)X~ ^10)

Ini digunakan -puntuk 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 *.chopstring ( ), 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. ^10adalah daftar 0, 1, ... 9.

Akhirnya, daftar dirangkai lagi dengan ~, memberikan kata-kata yang diperlukan dengan spasi sebagai pemisah.

Ramillies
sumber
2

PowerShell v2 +, 60 byte

param($n)$n.length..1|%{$i=$_-1;0..9|%{-join$n[0..$i]+"$_"}}

Loop dari panjang string input ke 1. Setiap iterasi, atur helper $isama dengan minus angka saat ini 1. Ini diperlukan karena .lengthjumlah total karakter, tetapi pengindeksan string berbasis 0. Kemudian, kita loop dari 0ke 9. Setiap loop dalam, mengiris string input $nberdasarkan nilai loop luar kami, -joinitu kembali menjadi string, dan string-digabungkan pada jumlah loop dalam. Setiap hasil loop individu ditempatkan pada pipa, dan output tersirat pada penyelesaian program.

PS C:\Tools\Scripts\golfing> .\invalid-invali-inval.ps1 'foo'
foo0
foo1
foo2
foo3
foo4
foo5
foo6
foo7
foo8
foo9
fo0
fo1
fo2
fo3
fo4
fo5
fo6
fo7
fo8
fo9
f0
f1
f2
f3
f4
f5
f6
f7
f8
f9
AdmBorkBork
sumber
2

Dyalog APL , 14 11 byte

Mengembalikan daftar string.

,⎕D∘.,⍨⌽,\⍞

, listify (buat tabel menjadi daftar)

⎕D semua digit

∘.,⍨ ditambahkan ke semua (yaitu membuat semua kombinasi dengan)

daftar terbalik dari

,\ gabungan kumulatif dari

input teks

TryAPL online!

Adám
sumber
Tetap. Saya menggunakan
pelat ketel
2

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.

   {s->(s.length()-1..0).each{c->10.times{print s[0..c]+it}}}

Cobalah di sini: https://groovyconsole.appspot.com/script/5148433803378688

Guci Gurita Ajaib
sumber
2

Batch, 85 83 byte

@for /l %%i in (0,1,9)do @echo %1%%i
@set s=%1
@if not "%s:~,-1%"=="" %0 %s:~,-1%
Neil
sumber
2

Java 7, 105 98 byte

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);}

-7 byte terima kasih kepada @Poke .

Tidak Terkumpul :

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);
  }
}

Kode uji:

Coba di sini.

class M{
  static 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);}

  public static void main(String[] a){
    c("INVALID");
    System.out.println();
    c("MAYBE");
    System.out.println();
    c("AFTER");
    System.out.println();
    c("WHAT ARE YOU DOING");
  }
}

Keluaran:

INVALID0INVALID1INVALID2INVALID3INVALID4INVALID5INVALID6INVALID7INVALID8INVALID9INVALID0INVALID1INVALID2INVALID3INVALID4INVALID5INVALID6INVALID7INVALID8INVALID9INVALI0INVALI1INVALI2INVALI3INVALI4INVALI5INVALI6INVALI7INVALI8INVALI9INVAL0INVAL1INVAL2INVAL3INVAL4INVAL5INVAL6INVAL7INVAL8INVAL9INVA0INVA1INVA2INVA3INVA4INVA5INVA6INVA7INVA8INVA9INV0INV1INV2INV3INV4INV5INV6INV7INV8INV9IN0IN1IN2IN3IN4IN5IN6IN7IN8IN9I0I1I2I3I4I5I6I7I8I9
MAYBE0MAYBE1MAYBE2MAYBE3MAYBE4MAYBE5MAYBE6MAYBE7MAYBE8MAYBE9MAYBE0MAYBE1MAYBE2MAYBE3MAYBE4MAYBE5MAYBE6MAYBE7MAYBE8MAYBE9MAYB0MAYB1MAYB2MAYB3MAYB4MAYB5MAYB6MAYB7MAYB8MAYB9MAY0MAY1MAY2MAY3MAY4MAY5MAY6MAY7MAY8MAY9MA0MA1MA2MA3MA4MA5MA6MA7MA8MA9M0M1M2M3M4M5M6M7M8M9
AFTER0AFTER1AFTER2AFTER3AFTER4AFTER5AFTER6AFTER7AFTER8AFTER9AFTER0AFTER1AFTER2AFTER3AFTER4AFTER5AFTER6AFTER7AFTER8AFTER9AFTE0AFTE1AFTE2AFTE3AFTE4AFTE5AFTE6AFTE7AFTE8AFTE9AFT0AFT1AFT2AFT3AFT4AFT5AFT6AFT7AFT8AFT9AF0AF1AF2AF3AF4AF5AF6AF7AF8AF9A0A1A2A3A4A5A6A7A8A9
WHAT ARE YOU DOING0WHAT ARE YOU DOING1WHAT ARE YOU DOING2WHAT ARE YOU DOING3WHAT ARE YOU DOING4WHAT ARE YOU DOING5WHAT ARE YOU DOING6WHAT ARE YOU DOING7WHAT ARE YOU DOING8WHAT ARE YOU DOING9WHAT ARE YOU DOING0WHAT ARE YOU DOING1WHAT ARE YOU DOING2WHAT ARE YOU DOING3WHAT ARE YOU DOING4WHAT ARE YOU DOING5WHAT ARE YOU DOING6WHAT ARE YOU DOING7WHAT ARE YOU DOING8WHAT ARE YOU DOING9WHAT ARE YOU DOIN0WHAT ARE YOU DOIN1WHAT ARE YOU DOIN2WHAT ARE YOU DOIN3WHAT ARE YOU DOIN4WHAT ARE YOU DOIN5WHAT ARE YOU DOIN6WHAT ARE YOU DOIN7WHAT ARE YOU DOIN8WHAT ARE YOU DOIN9WHAT ARE YOU DOI0WHAT ARE YOU DOI1WHAT ARE YOU DOI2WHAT ARE YOU DOI3WHAT ARE YOU DOI4WHAT ARE YOU DOI5WHAT ARE YOU DOI6WHAT ARE YOU DOI7WHAT ARE YOU DOI8WHAT ARE YOU DOI9WHAT ARE YOU DO0WHAT ARE YOU DO1WHAT ARE YOU DO2WHAT ARE YOU DO3WHAT ARE YOU DO4WHAT ARE YOU DO5WHAT ARE YOU DO6WHAT ARE YOU DO7WHAT ARE YOU DO8WHAT ARE YOU DO9WHAT ARE YOU D0WHAT ARE YOU D1WHAT ARE YOU D2WHAT ARE YOU D3WHAT ARE YOU D4WHAT ARE YOU D5WHAT ARE YOU D6WHAT ARE YOU D7WHAT ARE YOU D8WHAT ARE YOU D9WHAT ARE YOU 0WHAT ARE YOU 1WHAT ARE YOU 2WHAT ARE YOU 3WHAT ARE YOU 4WHAT ARE YOU 5WHAT ARE YOU 6WHAT ARE YOU 7WHAT ARE YOU 8WHAT ARE YOU 9WHAT ARE YOU0WHAT ARE YOU1WHAT ARE YOU2WHAT ARE YOU3WHAT ARE YOU4WHAT ARE YOU5WHAT ARE YOU6WHAT ARE YOU7WHAT ARE YOU8WHAT ARE YOU9WHAT ARE YO0WHAT ARE YO1WHAT ARE YO2WHAT ARE YO3WHAT ARE YO4WHAT ARE YO5WHAT ARE YO6WHAT ARE YO7WHAT ARE YO8WHAT ARE YO9WHAT ARE Y0WHAT ARE Y1WHAT ARE Y2WHAT ARE Y3WHAT ARE Y4WHAT ARE Y5WHAT ARE Y6WHAT ARE Y7WHAT ARE Y8WHAT ARE Y9WHAT ARE 0WHAT ARE 1WHAT ARE 2WHAT ARE 3WHAT ARE 4WHAT ARE 5WHAT ARE 6WHAT ARE 7WHAT ARE 8WHAT ARE 9WHAT ARE0WHAT ARE1WHAT ARE2WHAT ARE3WHAT ARE4WHAT ARE5WHAT ARE6WHAT ARE7WHAT ARE8WHAT ARE9WHAT AR0WHAT AR1WHAT AR2WHAT AR3WHAT AR4WHAT AR5WHAT AR6WHAT AR7WHAT AR8WHAT AR9WHAT A0WHAT A1WHAT A2WHAT A3WHAT A4WHAT A5WHAT A6WHAT A7WHAT A8WHAT A9WHAT 0WHAT 1WHAT 2WHAT 3WHAT 4WHAT 5WHAT 6WHAT 7WHAT 8WHAT 9WHAT0WHAT1WHAT2WHAT3WHAT4WHAT5WHAT6WHAT7WHAT8WHAT9WHA0WHA1WHA2WHA3WHA4WHA5WHA6WHA7WHA8WHA9WH0WH1WH2WH3WH4WH5WH6WH7WH8WH9W0W1W2W3W4W5W6W7W8W9
Kevin Cruijssen
sumber
1
Anda dapat menyimpan 7 byte dengan menggabungkan loop for dan melakukan beberapa logika tambahan untuk menentukan akhiran dan substring secara implisit. 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);}
Poke
1

Python 3, 62 byte

lambda x:[(x+" ")[:~i//10]+str(i%10)for i in range(len(x)*10)]

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,

Lemon dirusak
sumber
1

C, 72 , 70 byte

j;F(char*s,int l){while(l--)for(j=0;j<10;)printf("%.*s%d",l+1,s,j++);}

Mengambil string sebagai pasangan penunjuk / ukuran. Tes utama:

int main() {
  F("INVALID", 7); putchar('\n');
  F("MAYBE", 5); putchar('\n');
  F("AFTER", 5); putchar('\n');
  F("WHAT ARE YOU DOING", 18); putchar('\n');
}
Stefano Sanfilippo
sumber
1

Retina , 37 byte

Hitungan byte mengasumsikan penyandian ISO 8859-1.

M&!r`.+
m`$
0
%{`$
¶$%`
T`w`d`.$
G10`

Cobalah online!

Penjelasan

M&!r`.+

Dapatkan semua awalan input dengan mencocokkan dan mencetak semua kecocokan yang tumpang tindih dari kanan.

m`$
0

Tambahkan a 0ke 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).

T`w`d`.$

Tambahkan angka di baris terakhir dengan melakukan penggantian karakter berikut:

from: _0123456789AB...
to:   0123456789

Dan akhirnya:

G10`

Pertahankan hanya 10 baris pertama, sehingga kami menghapus baris yang baru saja kami tambahkan setelahnya INPUT9.

Martin Ender
sumber
1

Scala, 73 70 byte

def g(s:String):String=if(s=="")""else(0 to 9 flatMap(s+_))++g(s.init)

Sebut saja seperti f("INVALID"). Mengembalikan Urutan Karakter.

Penjelasan

def g(s:String):String= //defines a method g taking a String as a parameter
                        //and returning a String
if(s=="")""             //guard to prevent infinite recursion
else
    (0 to 9             //create a Range from 0 to 9 (inclusive)
    flatMap(            //map:
        s+_                 //append each number to the string
    ))                  //and flatten
    ++ g(s.init)        //concatenate with g applied to everything but the last element of s

Solusi alternatif, 73 byte

(s:String)=>s.scanLeft("")(_+_).tail.reverse.flatMap(x=>(0 to 9)map(x+_))

mendefinisikan fungsi anonim. Untuk menyebutnya, tulis

val f = ...

dan menyebutnya seperti ini

f("INVALID")

Ini mengembalikan urutan string, yang akan terlihat seperti ini ketika dicetak:

Vector(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)

Penjelasan

s.scanLeft("")(_+_)    //accumulate letters from left to right -> Vector("", "I", "IN", "INV", "INVA", "INVAL", "INVALI", "INVALID")
.tail                  //drop the first element
.reverse               //reverse it
.flatMap(x =>          //map each element called x
    (0 to 9)           //create a Range from 0 to 9 (inclusive)
    map(x+_)           //append each number to x
)                      //and flatten
corvus_192
sumber
Solusi rekursif Anda adalah 3 byte kurang dari yang iteratif
TuxCrafting
Anda benar, saya harus mengoptimalkannya setelah menghitung.
corvus_192
1

CJam, 29 28 byte

ls_,,:)W%]~{_[X<aA*A,]zo}fX;

Penjelasan:

ls                              read input as string
  _                             duplicate input
   ,,                           create range of length input
      :)W%]                     add 1 to all elements and reverse
           ~                    dump array on stack
            {            }fX    for loop
             _                  duplicate input string
              [X<aA*            slice input string and multiply by 10
                    A,]         range(10)
                       zo       zip array and print (no separator)
                            ;   clear stack

Cobalah online

Neorej
sumber