Kerusakan fungsi perangkat saya ... Menyalahgunakan perilaku string yang tidak ditentukan!

12

Tolong! Perangkat saya tidak berfungsi dan setiap kali saya mencoba mengulang sebuah String, saya mendapatkan hasil yang berantakan. Alih-alih mengulangi string N kali yang sama, ia mengisi kotak NxN dengan masing-masing karakter, dan menumpuk kotak.

Misalnya, mengingat String "Test"dan nomornya 2, alih-alih "TestTest", saya mendapatkan:

TT
TT
ee
ee
ss
ss
tt
tt

Setelah saya melihat ini sebentar, saya mulai menyukainya. Tugas Anda hari ini adalah mereproduksi perilaku aneh ini. Diberikan string yang tidak kosong yang hanya terdiri dari ASCII yang dapat dicetak, dan integer positif , mengeluarkan String yang dikembalikan oleh perangkat saya yang tidak berfungsi.

  • Semua aturan standar berlaku.

  • Input dan output dapat ditangani melalui cara yang masuk akal.

  • Ini adalah , jadi kode terpendek dalam byte di setiap bahasa menang.


Uji Kasus

Memasukkan 
Keluaran

----------

"Uji", 2

TT
TT
ee
ee
ss
ss
tt
tt

----------

"UuU", 3

UUU
UUU
UUU
kamuuu
kamuuu
kamuuu
UUU
UUU
UUU

----------

"A", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

Anda dapat menemukan test case yang lebih besar di sini . Semoga berhasil dan bersenang-senang bermain golf!


sumber
Duplikat batas Border art ASCII
Digital Trauma
1
Apakah "daftar garis" bukan string yang dipisahkan oleh baris baru yang valid?
geokavel
21
Hmm, saya tidak melihat bagaimana "penyalahgunaan perilaku yang tidak terdefinisi" dari judul sebenarnya ditampilkan dalam tugas. Tidak ada perilaku yang tidak terdefinisi, tugasnya adalah mereproduksi perilaku yang didefinisikan secara spesifik.
Paŭlo Ebermann
3
it fills an NxN square- Bukan pernyataan yang benar.
Magic Octopus Urn

Jawaban:

9

Jelly , 4 byte

Terinspirasi oleh penyalahgunaan Jelly Mr. Xcoder

x⁹×Y

Program lengkap yang menggunakan string dan angka sebagai argumen baris perintah dan mencetak hasilnya (karena sebagai tautan diadik ia mengembalikan daftar string dan karakter baris baru, yang mungkin tidak benar-benar dapat diterima).

Cobalah online!

Bagaimana?

Byter lima naif (tidak-kasar) adalah:

x⁹x€Y - Main link: list of characters, s; number, n  e.g. "xyz", 2
 ⁹    - chain's right argument, n                         2
x     - times (repeat each element)                       ['x','x','y','y','z','z']
  x€  - times for €ach                                   [['x','x'],['x','x'],['y','y'],['y','y'],['z','z'],['z','z']]
    Y - join with newlines                                ['x','x','\n','x','x','\n','y','y','\n','y','y','\n','z','z','\n','z','z']
      - as a full program: implicit print
      -   note: this could be submitted as a dyadic link (AKA unnamed function)

Penyalahgunaan yang digunakan oleh Tn. Xcoder (Python operator.muldapat bertindak pada strdan intuntuk mengulangi str- di sini karakter tunggal - dan atom yang menggunakannya ×,, vectorises wrt argumen kirinya) dapat digunakan di sini juga untuk menggantikan x€dengan ×- menghasilkan program lengkap :

x⁹×Y - Main link: list of characters, s; number, n  e.g. "xyz", 2
 ⁹   - chain's right argument, n                         2
x    - times (repeat each element)                       ['x','x','y','y','z','z']
  ×  - multiply (vectorises)                             ["xx","xx","yy","yy","zz","zz"]
     -     (note, these "..." are actually strings, something not usually seen in Jelly) 
    Y - join with newlines                                ["xx",'\n',"xx",'\n',"yy",'\n',"yy",'\n',"zz",'\n',"zz"]
      - implicit print
Jonathan Allan
sumber
heh penyalahgunaan pada tantangan tentang pelecehan
Erik the Outgolfer
9

Jelly , 5 byte

Inilah tepatnya yang diminta untuk kita lakukan ... Menyalahgunakan perilaku yang tidak terdefinisi! *

×+⁷×⁴

Cobalah online!

* Dengan perilaku yang tidak terdefinisi, saya berbicara tentang penggunaan ×string berulang. Terkadang lebih pendek dari perilaku biasanya, jadi mengapa tidak?

Tuan Xcoder
sumber
Sial, pukul aku sebentar!
caird coinheringaahing
@cairdcoinheringaahing Saya merasa bisa bermain golf, meskipun: - /
Tn. Xcoder
1
Saya telah menggunakan pelecehan Anda untuk bermain golf lima byter yang berbeda menjadi empat
Jonathan Allan
5

Bash + GNU Sed, 58

Menggunakan teknik yang sangat mirip dengan jawaban ini untuk menggambarkan bagaimana dekat untuk menjadi dup untuk ini bahwa pertanyaan ini adalah:

printf -vr %$1s
sed "s/./${r// /&}\n/g;s/\S*./${r// /&}/g"

Cobalah online .

Trauma Digital
sumber
4

Sekam , 5 4 byte

-1 byte terima kasih kepada @Zgarb

SṀRṘ

Cobalah online!

H.Piz
sumber
ṠMRṘberfungsi jika Anda menukar input.
Zgarb
3

PowerShell , 31 byte

param($a,$b)$a|%{,("$_"*$b)*$b}

Cobalah online!

Penjelasan:

param($a,$b)                    # Takes input $a (char-array) and $b (integer)
            $a|%{             } # Loop through every character in $a
                   "$_"*$b      # Construct a string of $b length of that character
                 ,(       )*$b  # Repeat that $b times
                                # Implicit Write-Output inserts a newline between elements
AdmBorkBork
sumber
3

05AB1E , 7 5 byte

-2 byte berkat skottinet

εײF=

Cobalah online!

ε     # For each character:
 ×    #   Repeat this character N times
  ²F  #   For 0 .. N:
    = #     Print without popping 
Riley
sumber
-2 byte dengan memanfaatkan input implisit, mencetak tanpa popping ( =) dan dengan mengganti vydengan ε: Coba online!
scottinet
2

Python 3 , 42 byte

lambda x,y:"".join(y*(r*y+"\n")for r in x)

Cobalah online!

Halvard Hummel
sumber
2

MATL , 5 byte

t&Y"!

Cobalah online!

Penjelasan

t     % Implicitly input a number, n. Duplicate
&Y"   % Implicitly input a string. Three-input repelem function. Repeats
      % each entry in the first input (s) the specified numbers of times 
      % vertically (n) and horizontally (n). Gives a char matrix
!     % Transpose. Implicit display
Luis Mendo
sumber
2

C ++, 125 123 byte

-2 byte terima kasih kepada aschepler

#include<string>
using s=std::string;s u(s a,int b){s r;for(auto&c:a)for(int i=0;i<b*b;){if(!(i++%b))r+=10;r+=c;}return r;}

Pastikan bahwa kelebihan +=operator yang dipanggil mengambil chartipe data dalam instruksi iniif(!(i++%b))r+=10

HatsuPointerKun
sumber
2
using s=std::string;lebih pendek dari typedef std::string s;dua byte.
aschepler
2

Japt , 7 byte

Menghasilkan array string.

VÆmpVÃy

Cobalah ( -Rtandai hanya untuk tujuan visualisasi)


Penjelasan

Input string Udan integer tersirat V.

VÆ    Ã

Buat array bilangan bulat dari 0ke V-1dan melewati masing-masing melalui fungsi.

mpV

Peta ( m) berulang Udan ulangi ( r) setiap Vkali karakter .

y

Transpose dan secara implisit menghasilkan array yang dihasilkan.

Shaggy
sumber
1

R , 59 byte

function(S,n)write(rep(strsplit(S,"")[[1]],e=n*n),"",n,,"")

Menulis ke stdout.

Pisahkan string menjadi karakter, ulangi setiap n^2kali, lalu cetak dengan lebar ndan tanpa pemisah.

Cobalah online!

Giuseppe
sumber
1

J, 15 14 byte

[:,/]$"1 0~[,[

Pasti kurang optimal. Mengembalikan array karakter 2D. Dibawa nsebagai argumen kiri dan string sebagai kanan.

Di ponsel, jadi fasilitas biasa tidak ada.

Penjelasan

(Untuk jawaban lama)

[:,/(2#[)$"1 0]

$"1 0 membentuk kembali setiap karakter menjadi

(2#[)sebuah n* nmatriks.

,/ gabungkan matriks bersama untuk menghasilkan output.

cole
sumber
2
5 byte
mil
@miles brilian! Saya akan mengatakan itu pantas untuk dijawab secara pribadi.
cole
@miles memposting milik Anda :)
Ven
1

Perl 5 , 26 + 1 (-p) = 27 byte

$"=<>;s|.|($&x$".$/)x$"|ge

Cobalah online!

Xcali
sumber
Ini tampaknya mengganti setiap karakter dengan deretan karakter horizontal, bukan dengan kuadrat karakter.
aschepler
Saya kira saya tidak mengerti dengan benar pada awalnya. Memperbaikinya dengan tambahan 5 byte.
Xcali
1

Pyth, 9 byte

VEp*+*NQb

Coba di sini!

Pyth, 11 10 byte

sm*Q+*QdbE

Coba di sini!

Atau, 10 byte:

jsm*Q]*QdE

Atau, 11 byte:

js*RQm]*dQE
jsm*vzm*dvz
sm*vz+*dvzb
Tuan Xcoder
sumber
1

Arang , 9 byte

FS«GTIηι↓

Cobalah online!

Penjelasan

FS         For each character (i) in the next input as a string
   «
    G    ι  Polygon using i as fill
      T      Right, down, then left
       Iη   The second input (h) casted (to a number)
           ↓ Move down
Khusus ASCII
sumber
1

Brainfuck, 103 Bytes

,[>,]-[>+<-----]>---[-<<->>]<<[->+<]>[[->+>+<<]>>[-<<+>>]<[<<<[<]>.[>]>>-]++++++++++.[-]<<<[<]>[-]>[>]>

Cobalah online (Pastikan untuk mengaktifkan memori dinamis atau tidak akan berjalan)

Catatan: Masukan sedikit berbeda. Kode ini mengambil string di mana karakter terakhir adalah digit untuk jumlah pengulangan. Jadi input mungkin terlihat seperti Test5.

Kode ini membutuhkan rekaman tanpa batas, dan bergantung pada perilaku pembungkus byte.

Tidak Disatukan:

,[>,]< Take Input
>-[>+<-----]>--- ASCII 0, to use in next step
[-<<->>]<< Convert ASCII number to raw number by subtracting ASCII 0
[->+<]> Move the number over one to separate it from the phrase
[
  [->+>+<<]>>[-<<+>>]< Copy the number
  [
    <<<[<]> Back to Letter
    . Print Letter
    [>]>>- Back to Counter
  ]
  ++++++++++.[-]< Print the newline
  <<[<]>[-]> Clear Letter
  [>]> Back to Counter
]
Ethan
sumber
1

SOGLOnline melakukan 2940dbe , 4 byte

∙ι*I

Ini dibuat untuk komit tertentu, yaitu yang sebelum saya ubah , ketika digunakan pada array string, mengulangi setiap huruf x kali untuk mengulangi setiap item x kali. Sini adalah penerjemah online tanpa versi itu, yang, seperti dapat dilihat, tidak berfungsi.

Untuk mencoba komit, unduh ini , buka index.htmlfile, di paste program ∙ι*Idan di input tuliskan seperti

Test
2

Penjelasan:

∙ι*I
∙     get an array with 2nd input amount of items of the 1st input
 ι    pop one implicit input to cycle back to the number
  *   multiply horizontally each separate character
   I  rotate clockwise
dzaima
sumber
Jika tidak berhasil, mengapa tautannya?
isaacg
@isaacg pertanyaan bagus. Pertama saya bermaksud menulis apa yang berubah, tetapi lupa
dzaima
1

Java 8, 152 128 118 100 byte

s->n->{for(char c:s)for(int j=0;j++<n;System.out.println("".valueOf(new char[n]).replace('\0',c)));}

Cobalah online!

Roberto Graham
sumber
2
100 byte:s->n->{for(char c:s)for(int j=0;j++<n;System.out.println("".valueOf(new char[n]).replace('\0',c)));}
Nevay
1

APL (Dyalog) , 8 byte

Mengambil pengulangan sebagai argumen kiri dan teks sebagai argumen benar.

{⍺⌿⍺/⍪⍵}

Cobalah online!

{... } sebuah lambda tanpa nama di mana mewakili argumen kiri dan argumen kanan

⍪⍵ buat teks menjadi tabel satu kolom

⍺/ mereplikasi waktu secara horizontal

⍺⌿ ulangan kali secara vertikal

Adm
sumber
1

Japt , 7 byte

mpV² òV

Mengembalikan array string.

Cobalah online! dengan -Rbendera untuk bergabung dengan array dengan baris baru.

Penjelasan

mpV² òV     Implicit input of U=string, V=number
m           Map each char in the input string to...
 pV²        Itself repeated V² times
     òV     Cut the resulting string into partitions of length V
Justin Mariner
sumber
1

D, 86 byte

S u(S,I)(S a,I b){S r;foreach(c;a)for(I i;i<b*b;){if(!(i++%b))r~='\n';r~=c;}return r;}

Cobalah online!

Mengambil string sebagai argumen kiri, dan integer sebagai argumen kanan. Ini adalah port jawaban C ++ HatsuPointerKun ke D.

Zacharý
sumber
0

Kotlin 1.1 - 99 byte

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.joinToString("\n"){p->List(c,{p}).joinToString("")}

Mengembalikan seluruh output sebagai string.

Tidak dapat menggunakan TryItOnline karena 1.1 tidak didukung

Uji

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.joinToString("\n"){p->List(c,{p}).joinToString("")}

fun main(args: Array<String>) {
    println(s("Hello World", 5))
}

Akan menjadi 84 jika daftar string dapat diterima sebagai output:

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.map{p->List(c,{p}).joinToString("")}
jrtapsell
sumber
0

PHP, 97 byte

for($i=0;$i<strlen($s=$argv[1]);$i++)for($j=0;$j<$r=$argv[2];$j++)echo str_repeat($s[$i],$r)."
";
jstnthms
sumber
0

Mathematica, 49 byte

(z=#2;Grid[Column/@Table[#,z,z]&/@Characters@#])&

memasukkan

["Tes", 4]

J42161217
sumber
0

Pyth , 12 byte

Berpikiran kecil, tapi saya belum sampai di sana.

VQp*+*Nszbsz

Penjelasan:

VQ          For every letter in the first input...
  p         Print without newline...
   *+*Nszsz (The index * int(second input) + newline) * int(the second input)

Test Suite

Stan Strum
sumber
0

Clojure , 82 75 byte

#(dotimes[x(count %1)](dotimes[y %2](prn(apply str(repeat %2(get %1 x))))))

Cobalah online!

Terkompresi:

#(dotimes [x (count %1)]
  (dotimes [y %2]
    (prn
      (apply str
        (repeat %2 (get %1 x))))))

Sunting: Mencukur beberapa karakter dari ujung dengan mengganti loop for dengan fungsi repeat stdlib.

luminous_arbour
sumber
0

C # (.NET Core) , 68 + 18 byte

a=>n=>new int[a.Length*n].Select((x,i)=>Enumerable.Repeat(a[i/n],n))

Juga termasuk dalam jumlah byte:

using System.Linq;

Cobalah online!

Output adalah kumpulan koleksi karakter (satu koleksi untuk setiap baris).

Penjelasan:

a => n =>                                // Take a string and a number
    new int[a.Length * n]                // Create new collection, 'n' times larger than 'a'
    .Select((x, i) =>                    // Replace every member with
        Enumerable.Repeat(a[i / n], n)   //     a collection of repeated character from 'a', based on index
    )
Grzegorz Puławski
sumber