Kata kerja yang bagus di sana, dalam judul.
Tulis sebuah program yang diberi string input, akan "melenturkan" string ini dan menampilkan hasilnya. Elastisisasi string dilakukan sebagai berikut:
Karakter pertama ditampilkan sekali. Karakter kedua ditampilkan dua kali. Karakter ketiga ditampilkan tiga kali, dan seterusnya.
Seperti yang Anda lihat, jumlah duplikasi karakter tertentu terkait dengan indeks karakter yang bertentangan dengan kemunculan sebelumnya dalam string.
Anda hanya dapat menerima karakter ASCII yang dapat dicetak. Berdasarkan tautan berikut , karakter-karakter ini memiliki nilai desimal 32-126.
Contoh:
Why: Whhyyy
SKype: SKKyyyppppeeeee
LobbY: LoobbbbbbbYYYYY
(Perhatikan bagaimana ada 7 b sejak b pertama ditampilkan 3 kali dan b kedua ditampilkan 4 kali, sehingga total 7 b).
A and B: A aaannnnddddd BBBBBBB
Bytes terpendek menang :)
Jawaban:
Jelly , 3 byte
Kode:
Penjelasan:
Menggunakan pengodean Jelly . Cobalah online! .
sumber
*
melakukan multiplikasi string. Itu tidak benar-benar dimaksudkan, tetapi berhasil.*
? Tidak ada hal seperti itu di seluruh jawaban.P
perintah Jelly menghitung produk di belakang layar menggunakan*
operator Python . Posting ini menyalahgunakan abstraksi yang bocor dari kode yang mendasari sebenarnya berada di Python, sehingga melakukan perintahP
(produk) pada sebuah string berfungsi seperti yang diharapkan.J, 4 byte
Pemakaian
Penjelasan
sumber
Brainfuck, 15 byte
Implementasi yang cukup mudah, menggeser ruang memori sebesar 1 untuk setiap karakter input. Membutuhkan interpreter yang memberikan 0 pada EOF, dan sel presisi 32-bit / arbitrary untuk input yang lebih panjang dari 255 karakter.
Cobalah online! (Catatan: TIO menggunakan sel 8-bit)
sumber
Java,
158121 byteMenyimpan 37 byte kekalahan berkat Kevin Cruijssen !
Sebagai bonus, program ini dapat menangani semua karakter Unicode yang ada, termasuk karakter kontrol yang terletak di bagian paling bawah Basic Multilingual Plane .
sumber
for(int C=c+1;C>0;C--)
denganfor(int C=c+2;--C>0;)
interface a{static void main(String[]A){int x=0,i;for(char c:A[0].toCharArray())for(i=x+++2;--i>0;)System.out.print(c);}}
interface
defaultpublic
. Itu pintar.Perl, 16 byte
+1 byte untuk
-p
bendera.sumber
Haskell, 29 byte
Contoh penggunaan:
concat.zipWith replicate[1..] $ "SKype"
->"SKKyyyppppeeeee"
.replicate n c
membuat n salinan c danconcat
membuat daftar tunggal dari semua sublists.sumber
id=<<
adalah sentuhan yang bagus. :)f = id=<<zipWith replicate[1..]
(dalam file) memang menghasilkan kesalahan yang buruk, bisakah Anda mengatakan apa yang saya lakukan salah?(id=<<zipWith replicate[1..] ) "SKype"
apakah masih harus bekerja? Kalau tidak, saya akan menganggapnya sebagai cuplikan . Program lengkap yang Anda berikan memang memiliki "SKype" hardcoded.:t
tidak menganggapid=<<zipWith replicate[1..]
sebagai fungsi (hanya melempar kesalahan) namun(id=<<).zipWith replicate[1..]
dianggap sebagai fungsi. Saya akan mengatakan yang pertama hanya potongan, yang hanya berfungsi jika Anda memasukkan hardcode input, tetapi yang kedua yang baru saja diposkan adalah fungsi (dan:t
setuju), apakah Anda setuju akan hal itu?CJam,
987 byteTerima kasih kepada jimmy23013 untuk menghemat 1 byte.
Uji di sini.
Penjelasan
Menggunakan
LobbY
contoh:sumber
Python, 39 byte
Uji di Ideone .
sumber
Javascript ES6, 39 byte
Panjangnya sama, tetapi lebih menyenangkan:
Demo cuplikan:
sumber
<pre>
sebagai gantinya<div>
, itu akan membantu.APL (8)
Yaitu:
Penjelasan:
⍴⍵
: panjang vektor yang diberikan⍳
: angka 1..N⍵/⍨
: mereplikasi setiap elemen dalam⍵
N kali.sumber
MATLAB, 45 byte
Penjelasan: Kuncinya adalah
hankel
, yang menghasilkan matriks Hankel dari vektor yang diberikan. Dari matriks ini, kita dapat mengekstraksi vektor indeks, yang menentukan karakter string mana yang berada di posisi mana dalam output. Misalnyahankel(1:4)
menghasilkan matriks berikut:Dari matriks ini kita dapat mengekstrak vektor
1,2,2,3,3,3,4,4,4,4,4
. Vektor ini memungkinkan kita untuk mengeluarkan karakter pertama dari string sekali , yang kedua dua kali dllsumber
NARS2000 , 6 karakter = 12 byte
⍳∘⍴
enumerasi argumen ... (indeks panjangnya)/⊙
mereplikasi elemen ...⊢
argumen yang tidak dimodifikasisumber
PowerShell v2 +, 36 byte
Mengambil input
$args[0]
, secara eksplisit melemparkannya sebagaichar
array, mengirimkannya ke dalam satu lingkaran|%{...}
. Setiap iterasi, kami mengambil huruf / karakter saat ini"$_"
dan menggunakan*
operator kelebihan beban untuk menggabungkan string pra-kenaikan$i
kali. Hasil dari setiap iterasi loop diringkas dalam parens untuk membentuk array dan kemudian-join
diedit bersama untuk membentuk string. String itu ditinggalkan di pipeline dan outputnya implisit.Contohnya
sumber
Brachylog , 13 byte
Ini mencetak hasilnya ke
STDOUT
.Penjelasan
Ini adalah contoh yang baik untuk mengeksploitasi backtracking ke loop.
sumber
MATLAB, 23 byte
Menciptakan fungsi anonim
ans
yang bisa disebut menggunakanans('stringtoelacticize')
sumber
repelem
dalam versi saya (relatif lama) = (repelem
diperkenalkan di R2015aK / Kona , 14 byte
Pemakaian:
sumber
Perl 6 ,
22 2019 bytePenjelasan:
sumber
VBA, 75 byte
Sebut sebagai misalnya fungsi pengguna dalam spreadsheet.
= e (A1)
Ini terpotong jika Anda memberinya output sendiri beberapa kali :-).
sumber
=)
PHP, 68 byte
sumber
for(;$a=$argv[1][$i++];)echo str_repeat($a,$i);
.Javascript ES6,
4241 byteContoh berjalan:
sumber
s=>[...s].reduce((a,b,i)=>a+b.repeat(i+1))
s=>[,...s].map((e,i)=>e.repeat(i)).join``
Retina , 22 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Pada dasarnya, kami menyisipkan jumlah yang tepat
·
sebagai placeholder di antara karakter (karena karakter ASCII yang diperluas ini tidak dapat muncul di input), lalu mengisinya dengan karakter yang berdekatan di tahap kedua.sumber
R ,
8350 byte-23 Terima kasih kepada Giuseppe, meskipun pada dasarnya dia menggunakan seluruh metode baru
Posting asli saya:
Cobalah online!
Saya merasa pasti ada cara yang lebih baik untuk melakukan ini, tetapi dengan pengetahuan baru saya tentang beberapa fungsi dalam R, ini adalah pendekatan saya.
sumber
scan
menghemat 1 byte!rep
dan argumencollapse=""
untukpaste
lebih pendek, danutf8ToInt
masih lebih pendek! TIOSebenarnya, 7 byte
Cobalah online!
Penjelasan:
sumber
Pyth - 5 byte
1 byte disimpan berkat @FryAmTheEggman.
Test Suite .
sumber
Python 3,
4847 byteTerima kasih kepada mego karena telah menghemat satu byte dengan
-~i
triknya.Ini sebagian besar sudah jelas. Satu hal untuk mereka yang tidak berpengalaman dalam Python:
*
Operator kelebihan beban untuk bertindak sepertix
operator Perl , mengulangi argumen stringnya berapa kali ditentukan oleh argumen numeriknya. Misalnya'foo' * 3 == 'foofoofoo'
sumber
c*-~i
lebih pendek daric*(i+1)
.C #, 81 Bytes
sumber
foreach(var a in s)Console.Write(new C(a,1*i++));
using System
atau beberapaSystem.
di depanConsole
.int i=1;
void f(string s){s.Select((c,i)=>{Console.Write(new string(c,i+1));return c;});}
. Kebutuhan untuk nilai pengembalian (tidak digunakan) jelek. Sunting: baru saja menemukan cuplikan serupa di jawaban lain di bagian belakang.MATL, 5 byte
Cobalah secara Online
Penjelasan
sumber
Python, 40 byte
sumber
Julia, 34 byte
Cobalah online!
sumber
c%n="$c"^n;~s=join([s[r=1:end]...].%r)
, tapi itu sebenarnya lebih lama.split
adalah potongan puzzle yang hilang.TSQL, 97 byte
Golf:
Tidak Disatukan:
Cobalah online
sumber