Mein Gerät funktioniert nicht richtig.

12

Hilfe! Mein Gerät funktioniert nicht richtig und wenn ich versuche, einen String zu wiederholen, erhalte ich ein unordentliches Ergebnis. Anstatt die gleiche Zeichenfolge N- mal zu wiederholen , füllt es ein NxN- Quadrat mit jedem seiner Zeichen und stapelt die Quadrate auf.

Zum Beispiel erhalte ich bei gegebener Zeichenfolge "Test"und der Zahl 2anstelle von "TestTest":

TT
TT
ee
ee
ss
ss
tt
tt

Nachdem ich das eine Weile gesehen hatte, fing ich an, es zu mögen. Ihre Aufgabe heute ist es, dieses seltsame Verhalten zu reproduzieren. Bei einer nicht leeren Zeichenfolge, die nur aus druckbarem ASCII -Code besteht, und einer positiven Ganzzahl wird die Zeichenfolge ausgegeben, die mein fehlerhaftes Gerät zurückgibt.

  • Es gelten alle Standardregeln.

  • Die Eingabe und Ausgabe kann auf jede vernünftige Weise erfolgen.

  • Das ist , also gewinnt der kürzeste Code in Bytes in jeder Sprache.


Testfälle

Eingang 
Ausgabe

----------

"Test", 2

TT
TT
ee
ee
ss
ss
tt
tt

----------

"UuU", 3

UUU
UUU
UUU
uuu
uuu
uuu
UUU
UUU
UUU

----------

"A", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

Einen größeren Testfall finden Sie hier . Viel Glück und viel Spaß beim Golfen!


quelle
Borderline-Duplikat von Enlarge ASCII art
Digital Trauma
1
Ist eine "Zeilenliste" anstelle einer durch Zeilenumbrüche getrennten Zeichenfolge gültig?
Geokavel
21
Hmm, ich sehe nicht, wie der "Missbrauch seines undefinierten Verhaltens" aus dem Titel tatsächlich in der Aufgabe zeigt. Es gibt kein undefiniertes Verhalten, die Aufgabe besteht darin, ein ganz speziell definiertes Verhalten zu reproduzieren.
Paŭlo Ebermann
3
it fills an NxN square- Keine korrekte Aussage.
Magic Octopus Urn

Antworten:

9

Gelee , 4 Bytes

Inspiriert von Mr. Xcoders Jelly-Missbrauch

x⁹×Y

Ein vollständiges Programm, das die Zeichenfolge und die Zahl als Befehlszeilenargumente verwendet und das Ergebnis ausgibt (da es als dyadische Verknüpfung eine Liste von Zeichenfolgen und Zeilenumbrüchen zurückgibt, die möglicherweise nicht akzeptabel sind).

Probieren Sie es online!

Wie?

Das naive (nicht-missbräuchliche) Fünf-Byte ist:

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)

Der von Mr. Xcoder verwendete Missbrauch (Pythons operator.mulkann auf ein strund ein wirken int, um die str- hier einzelnen Zeichen - zu wiederholen, und das Atom, das ihn verwendet ×, vektorisiert sein linkes Argument) kann auch hier verwendet werden, um x€durch ×- das vollständige Programm zu ersetzen :

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
quelle
heh Missbrauch auf Herausforderung über Missbrauch
Erik der Outgolfer
9

Gelee , 5 Bytes

Genau das müssen wir tun ... Missbrauch undefinierten Verhaltens! *

×+⁷×⁴

Probieren Sie es online!

* Durch undefiniertes Verhalten spreche ich über das ×Wiederholen von Zeichenfolgen. Manchmal ist es kürzer als sonst, warum also nicht?

Mr. Xcoder
quelle
Verdammt, schlag mich um eine Minute!
Caird Coinheringaahing
@ Cairdcoinheringaahing Ich habe das Gefühl, es kann Golf gespielt werden, obwohl: - /
Mr. Xcoder
1
Ich habe Ihren Missbrauch genutzt, um einen anderen Fünf-Byter-gegen-Vier-Golf zu spielen
Jonathan Allan,
5

Bash + GNU Sed, 58

Eine sehr ähnliche Technik zur Verwendung von dieser Antwort , wie nahe ist ein dup zu veranschaulichen dies , dass diese Frage ist:

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

Probieren Sie es online aus .

Digitales Trauma
quelle
3

PowerShell , 31 Byte

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

Probieren Sie es online!

Erläuterung:

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
quelle
3

05AB1E , 7 5 Bytes

-2 Bytes dank Scottinet

εײF=

Probieren Sie es online!

ε     # For each character:
 ×    #   Repeat this character N times
  ²F  #   For 0 .. N:
    = #     Print without popping 
Riley
quelle
-2 Bytes von Vorteil implizite Eingänge nehmen, Drucken ohne Aufspringen ( =) und durch den Austausch vymit ε: Online ausprobieren!
Scottinet
2

MATL , 5 Bytes

t&Y"!

Probieren Sie es online!

Erläuterung

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
quelle
2

C ++, 125 123 Bytes

-2 bytes dank 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;}

Stellen Sie sicher, dass die Überladung des +=aufgerufenen Operators einen charDatentyp in dieser Anweisung annimmtif(!(i++%b))r+=10

HatsuPointerKun
quelle
2
using s=std::string;ist kürzer als typedef std::string s;zwei Bytes.
Aschepler
2

Japt , 7 Bytes

Gibt ein Array von Strings aus.

VÆmpVÃy

Probieren Sie es aus ( -RFlagge nur zu Visualisierungszwecken)


Erläuterung

Implizite Eingabe von Zeichenfolge Uund Ganzzahl V.

VÆ    Ã

Generieren Sie ein Array von Ganzzahlen von 0bis V-1und übergeben Sie diese jeweils einer Funktion.

mpV

Map ( m) über Uund wiederhole ( r) jedes Zeichen Vmal.

y

Transponieren Sie das resultierende Array und geben Sie es implizit aus.

Zottelig
quelle
1

R , 59 Bytes

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

Schreibt an stdout.

Teilt die Zeichenfolge in Zeichen auf, wiederholt sie jedes n^2Mal und druckt dann mit Breite nund ohne Trennzeichen.

Probieren Sie es online!

Giuseppe
quelle
1

J, 15 14 Bytes

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

Sicher nicht optimal. Gibt ein 2D-Array von Zeichen zurück. Nimmtn als linkes Argument und den String als rechtes.

Auf dem Handy fehlen also die üblichen Annehmlichkeiten.

Erläuterung

(Für alte Antwort)

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

$"1 0 gestalten Sie jeden Buchstaben zu um

(2#[)ein n*n Matrix.

,/ Matrizen zusammenfügen, um die Ausgabe zu erhalten.

cole
quelle
2
5 Bytes
Meilen
@ Meilen brillant! Ich würde sagen, das verdient eine eigene persönliche Antwort.
Cole
@ Meilen post yours :)
Ven
1

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

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

Probieren Sie es online!

Xcali
quelle
Dies scheint jedes Zeichen durch eine horizontale Zeichenreihe zu ersetzen, nicht durch ein Zeichenquadrat.
Aschepler
Ich glaube, ich habe es zuerst nicht richtig verstanden. Es wurde mit zusätzlichen 5 Bytes behoben.
Xcali
1

Kohle , 9 Bytes

FS«GTIηι↓

Probieren Sie es online!

Erläuterung

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
Nur ASCII
quelle
1

Brainfuck, 103 Bytes

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

Probieren Sie es online aus (Stellen Sie sicher, dass der dynamische Speicher aktiviert ist, da er sonst nicht ausgeführt werden kann.)

Hinweis: Die Eingabe unterscheidet sich geringfügig. Dieser Code enthält eine Zeichenfolge, bei der das letzte Zeichen eine Ziffer für die Anzahl der Wiederholungen ist. So könnte die Eingabe aussehen Test5.

Dieser Code erfordert ein unbegrenztes Band und basiert auf dem Umbruchverhalten von Bytes.

Ungolfed:

,[>,]< 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
quelle
1

SOGLOnline-Commit 2940dbe , 4 Bytes

∙ι*I

Dies wurde für ein bestimmtes Commit gemacht, nämlich das, bevor ich es geändert habe , wenn es für ein Array von Zeichenfolgen verwendet wurde, wobei jeder Buchstabe x-mal wiederholt wurde, um jedes Element x-mal zu wiederholen. Hier ist der Online-Interpreter ohne diese Version, die, wie zu sehen ist, nicht funktioniert.

Um das Festschreiben zu versuchen, laden Sie dieses herunter , öffnen Sie die index.htmlDatei, fügen Sie das Programm ein ∙ι*Iund schreiben Sie in die Eingabe so etwas wie

Test
2

Erläuterung:

∙ι*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
quelle
Wenn es nicht funktioniert, warum der Link?
isaacg
@isaacg gute Frage. Zuerst wollte ich schreiben, was sich geändert hat, vergaß aber
dzaima
1

Java 8, 152 128 118 100 Bytes

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

Probieren Sie es online!

Roberto Graham
quelle
2
100 Bytes: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 Bytes

Nimmt die Wiederholung als linkes Argument und den Text als rechtes Argument.

{⍺⌿⍺/⍪⍵}

Probieren Sie es online!

{} Ein unbenannter Lambda wo das linke Argument und das rechte Argument dargestellt werden

⍪⍵ Machen Sie den Text zu einer einspaltigen Tabelle

⍺/ replizieren mal horizontal

⍺⌿ repliziere mal vertikal

Adam
quelle
1

Japt , 7 Bytes

mpV² òV

Gibt ein Array von Zeichenfolgen zurück.

Probieren Sie es online! mit dem-R Flag, um das Array mit Zeilenumbrüchen zu verbinden.

Erläuterung

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
quelle
1

D, 86 Bytes

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

Probieren Sie es online!

Nimmt die Zeichenfolge als linkes Argument und die Ganzzahl als rechtes Argument. Dies ist eine Portierung der C ++ - Antwort von HatsuPointerKun in D.

Zacharý
quelle
0

Kotlin 1.1 - 99 Bytes

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

Gibt die gesamte Ausgabe als String zurück.

TryItOnline kann nicht verwendet werden, da 1.1 nicht unterstützt wird

Prüfung

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

Es wäre 84, wenn eine Liste von Zeichenfolgen als Ausgabe akzeptabel wäre:

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

PHP, 97 Bytes

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

Mathematica, 49 Bytes

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

Eingang

["Test", 4]

J42161217
quelle
0

Pyth , 12 Bytes

Klein, aber ich bin noch nicht dort angekommen.

VQp*+*Nszbsz

Erläuterung:

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
quelle
0

Clojure , 82 75 Bytes

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

Probieren Sie es online!

Unkomprimiert:

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

Bearbeiten: Rasiert ein paar Zeichen am Ende, indem eine for-Schleife durch die stdlib-Wiederholfunktion ersetzt wird.

leuchtender_hafen
quelle
0

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

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

Ebenfalls in der Byteanzahl enthalten:

using System.Linq;

Probieren Sie es online!

Die Ausgabe ist eine Sammlung von Zeichensammlungen (eine Sammlung für jede Zeile).

Erläuterung:

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
quelle