อุปกรณ์ของฉันทำงานผิดปกติ ... ละเมิดพฤติกรรมสตริงที่ไม่ได้กำหนด!


12

ช่วยด้วย! อุปกรณ์ของฉันทำงานผิดปกติและเมื่อใดก็ตามที่ฉันพยายามที่จะทำซ้ำสตริงฉันได้รับผลลัพธ์ที่ยุ่งเหยิง แทนที่จะทำซ้ำสตริงเดิมNครั้งมันจะเติมตารางNxNด้วยอักขระแต่ละตัวและเติมสี่เหลี่ยมขึ้น

ตัวอย่างเช่นกำหนด String "Test"และจำนวน2แทนที่จะ"TestTest"ได้รับ:

TT
TT
ee
ee
ss
ss
tt
tt

หลังจากที่ฉันเห็นสิ่งนี้มาระยะหนึ่งฉันก็เริ่มชอบมัน งานของคุณในวันนี้คือการทำซ้ำพฤติกรรมที่แปลกประหลาดนี้ รับสตริงที่ไม่ว่างซึ่งประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้นและจำนวนเต็มบวกส่งออกอุปกรณ์ของฉันที่ชำรุด String

  • ใช้กฎมาตรฐานทั้งหมด

  • อินพุตและเอาต์พุตอาจได้รับการจัดการผ่านค่าเฉลี่ยที่สมเหตุสมผล

  • นี่คือดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ในแต่ละภาษาจะชนะ


กรณีทดสอบ

อินพุต 
เอาท์พุต

----------

"ทดสอบ", 2

TT
TT
จ
จ
เอสเอส
เอสเอส
TT
TT

----------

"UuU", 3

UUU
UUU
UUU
uuu
uuu
uuu
UUU
UUU
UUU

----------

"A", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

คุณสามารถหากรณีทดสอบขนาดใหญ่ที่นี่ ขอให้โชคดีและสนุกกับการเล่นกอล์ฟ!


เส้นขอบที่ซ้ำซ้อนของศิลปะภาพขยาย ASCII
Digital Trauma

1
"รายการของบรรทัด" แทนสตริงที่คั่นด้วยบรรทัดใหม่ถูกต้องหรือไม่
geokavel

21
อืมฉันไม่เห็นว่า "ละเมิดพฤติกรรมที่ไม่ได้กำหนด" จากชื่อที่แสดงในงาน ไม่มีพฤติกรรมที่ไม่ได้กำหนดงานคือการทำซ้ำพฤติกรรมที่กำหนดไว้ค่อนข้างเฉพาะ
Paŭlo Ebermann

3
it fills an NxN square- ไม่ใช่ข้อความที่ถูกต้อง
Magic Octopus Urn

คำตอบ:


9

เยลลี่ 4 ไบต์

แรงบันดาลใจจากการละเมิดวุ้นของ Mr. Xcoder

x⁹×Y

โปรแกรมเต็มรูปแบบที่รับสตริงและหมายเลขเป็นอาร์กิวเมนต์บรรทัดคำสั่งและพิมพ์ผลลัพธ์ (เนื่องจากลิงก์ dyadic จะส่งคืนรายการสตริงและอักขระขึ้นบรรทัดใหม่ซึ่งอาจไม่เป็นที่ยอมรับจริงๆ)

ลองออนไลน์!

อย่างไร?

ผู้ไม่ประสงค์ดีห้าคนคือ:

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)

การใช้ผิดวิธีโดย Mr. Xcoder (Python operator.mulอาจทำหน้าที่ a strและa intเพื่อทำซ้ำstr- ที่นี่อักขระเดี่ยว - และอะตอมที่ใช้มัน×, vectorises wrt อาร์กิวเมนต์ซ้ายของมัน) สามารถใช้ที่นี่เช่นกันเพื่อแทนที่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']
  ×  - 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

heh การละเมิดเกี่ยวกับความท้าทายเกี่ยวกับการละเมิด
Erik the Outgolfer

9

เยลลี่ 5 ไบต์

นี่คือสิ่งที่เราถูกขอให้ทำ ... ละเมิดพฤติกรรมที่ไม่ได้กำหนด! *

×+⁷×⁴

ลองออนไลน์!

* โดยพฤติกรรมที่ไม่ได้กำหนดฉันกำลังพูดถึงการใช้×สำหรับการทำซ้ำสตริง บางครั้งมันสั้นกว่าพฤติกรรมปกติดังนั้นทำไมไม่


ประณามฉันโดยนาที!
caird coinheringaahing

@cairdcoinheringaahing ฉันมีความรู้สึกว่าสามารถเล่นกอล์ฟได้แม้ว่า: - /
Mr. Xcoder

1
ฉันใช้การทารุณของคุณเพื่อตีลูกกอล์ฟห้าคนลงไปอีกสี่ลูก
โจนาธานอัลลัน




3

PowerShell , 31 ไบต์

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

ลองออนไลน์!

คำอธิบาย:

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

3

05AB1E , 7 5 ไบต์

-2 ไบต์ขอบคุณscottinet

εײF=

ลองออนไลน์!

ε     # For each character:
 ×    #   Repeat this character N times
  ²F  #   For 0 .. N:
    = #     Print without popping 

-2 ไบต์โดยใช้ประโยชน์จากอินพุตโดยปริยายการพิมพ์โดยไม่ต้อง popping ( =) และแทนที่vyด้วยε: ลองออนไลน์!
กอตติเนต์



2

C ++, 125 123 ไบต์

-2 ไบต์ขอบคุณ 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;}

ตรวจสอบให้แน่ใจว่าโอเวอร์โหลดของ+=โอเปอเรเตอร์ที่เรียกใช้รับcharชนิดข้อมูลในคำสั่งนี้if(!(i++%b))r+=10


2
using s=std::string;สั้นกว่าtypedef std::string s;สองไบต์
aschepler

2

Japtap , 7 ไบต์

ส่งออกอาร์เรย์ของสตริง

VÆmpVÃy

ลองใช้ ( -Rตั้งค่าสถานะเพื่อการสร้างภาพเท่านั้น)


คำอธิบาย

การป้อนข้อมูลโดยนัยของสตริงและจำนวนเต็มUV

VÆ    Ã

สร้างอาร์เรย์ของจำนวนเต็มตั้งแต่0ถึงV-1และผ่านแต่ละฟังก์ชัน

mpV

แผนที่ ( m) Uซ้ำแล้วซ้ำอีก ( r) ตัวละครแต่ละVครั้ง

y

ย้ายและส่งออกอาร์เรย์ผลลัพธ์โดยปริยาย


1

R , 59 ไบต์

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

เขียนไปที่ stdout

แบ่งสตริงออกเป็นอักขระทำซ้ำแต่ละn^2ครั้งจากนั้นพิมพ์ด้วยความกว้างnและไม่มีตัวคั่น

ลองออนไลน์!


1

J, 15 14 ไบต์

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

ย่อยที่เหมาะสมที่สุดอย่างแน่นอน ส่งคืนอาร์เรย์ 2 มิติของ chars ใช้nเป็นอาร์กิวเมนต์ซ้ายและสตริงเป็นด้านขวา

บนมือถือดังนั้นสิ่งอำนวยความสะดวกตามปกติจะหายไป

คำอธิบาย

(สำหรับคำตอบเก่า)

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

$"1 0 ปรับแต่งอักขระแต่ละตัวเป็น

(2#[)n* nเมทริกซ์

,/ เข้าร่วมการฝึกอบรมร่วมกันเพื่อให้ได้ผลลัพธ์



@miles ยอดเยี่ยม! ฉันจะบอกว่าสมควรได้รับคำตอบของมันเป็นการส่วนตัว
โคล

@miles คุณโพสต์ :)
Ven

1

Perl 5 , 26 + 1 (-p) = 27 ไบต์

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

ลองออนไลน์!


สิ่งนี้ดูเหมือนว่าจะแทนที่ตัวละครแต่ละตัวด้วยแถวแนวนอนของตัวละครไม่ใช่ด้วยตัวละครที่สอง
aschepler

ฉันเดาว่าฉันไม่เข้าใจอย่างถูกต้องในตอนแรก แก้ไขด้วยการเพิ่ม 5 ไบต์
Xcali



1

Brainfuck, 103 Bytes

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

ลองใช้ออนไลน์ (อย่าลืมเปิดหน่วยความจำแบบไดนามิกมิเช่นนั้นจะไม่ทำงาน)

หมายเหตุ: อินพุตแตกต่างกันเล็กน้อย รหัสนี้ใช้เป็นสตริงที่อักขระตัวสุดท้ายเป็นตัวเลขสำหรับจำนวนการซ้ำ Test5ดังนั้นการป้อนข้อมูลอาจมีลักษณะเช่น

รหัสนี้ต้องใช้เทปที่ไม่มีข้อ จำกัด และอาศัยการทำงานแบบไบต์ห่อ

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
]

1

SOGLOnline ส่ง 2940dbe , 4 ไบต์

∙ι*I

สิ่งนี้ถูกสร้างขึ้นสำหรับการคอมมิทเฉพาะคืออันแรกที่ฉันเปลี่ยนจากเมื่อใช้กับอาเรย์ของสตริงการทำซ้ำตัวอักษร x แต่ละครั้งเพื่อทำซ้ำแต่ละรายการ x ครั้ง นี่คือล่ามออนไลน์ที่ไม่มีรุ่นนั้นซึ่งสามารถเห็นได้ว่าใช้งานไม่ได้

หากต้องการลองคอมมิชชันให้ดาวน์โหลดสิ่งนี้เปิดindex.htmlไฟล์ในการวางโปรแกรม∙ι*Iและในอินพุตเขียนสิ่งที่ต้องการ

Test
2

คำอธิบาย:

∙ι*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

ถ้ามันไม่ทำงานทำไมลิงค์
isaacg

@isaacg คำถามที่ดี ก่อนอื่นฉันตั้งใจจะเขียนสิ่งที่เปลี่ยนแปลง แต่ลืมไป
dzaima


1

APL (Dyalog) 8 ไบต์

ใช้การทำซ้ำเป็นอาร์กิวเมนต์ซ้ายและข้อความเป็นอาร์กิวเมนต์ที่ถูกต้อง

{⍺⌿⍺/⍪⍵}

ลองออนไลน์!

{} แลมบ์ดาที่ไม่มีชื่อซึ่งแสดงถึงอาร์กิวเมนต์ซ้ายและอาร์กิวเมนต์ที่ถูกต้อง

⍪⍵ ทำให้ข้อความเป็นตารางหนึ่งคอลัมน์

⍺/ ทำซ้ำครั้งในแนวนอน

⍺⌿ ทำซ้ำครั้งในแนวตั้ง


1

Japtap , 7 ไบต์

mpV² òV

ส่งคืนอาร์เรย์ของสตริง

ลองออนไลน์! ด้วยการ-Rตั้งค่าสถานะเพื่อเข้าร่วมอาร์เรย์กับบรรทัดใหม่

คำอธิบาย

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




0

Kotlin 1.1 - 99 ไบต์

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

ส่งคืนเอาต์พุตทั้งหมดเป็นสตริง

ไม่สามารถใช้ TryItOnline เนื่องจากไม่รองรับ 1.1

ทดสอบ

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

มันจะเป็น 84 ถ้ารายการของสตริงเป็นที่ยอมรับเป็นเอาท์พุท:

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



0

Pyth , 12 ไบต์

ใจเล็ก แต่ฉันยังไม่ได้ไปที่นั่นเลย

VQp*+*Nszbsz

คำอธิบาย:

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

ชุดทดสอบ


0

Clojure , 82 75 ไบต์

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

ลองออนไลน์!

ไม่มีการบีบอัด:

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

แก้ไข: โกนสองสามตัวอักษรปิดท้ายโดยแทนที่ห่วงสำหรับด้วยฟังก์ชั่นการทำซ้ำ stdlib


0

C # (.NET Core) , 68 + 18 ไบต์

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

รวมอยู่ในจำนวนไบต์:

using System.Linq;

ลองออนไลน์!

เอาต์พุตคือชุดของชุดอักขระ (หนึ่งชุดสำหรับแต่ละบรรทัด)

คำอธิบาย:

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
    )
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.