Thiết bị của tôi gặp trục trặc, Lạm dụng hành vi chuỗi không xác định của nó!


12

Cứu giúp! Thiết bị của tôi gặp trục trặc và bất cứ khi nào tôi cố gắng lặp lại Chuỗi, tôi nhận được kết quả lộn xộn. Thay vì lặp lại cùng một chuỗi N lần, nó sẽ điền vào một hình vuông NxN với mỗi ký tự của nó và sắp xếp các hình vuông lên.

Ví dụ: được cho Chuỗi "Test"và số 2, thay vì "TestTest", tôi nhận được:

TT
TT
ee
ee
ss
ss
tt
tt

Sau khi tôi thấy điều này một lúc, tôi bắt đầu thích nó. Nhiệm vụ của bạn hôm nay là tái tạo hành vi kỳ lạ này. Cho một không trống chuỗi bao gồm tự ASCII in chỉ và tích cực số nguyên, sản lượng String của tôi trở lại thiết bị hư hỏng.

  • Tất cả các quy tắc tiêu chuẩn được áp dụng.

  • Đầu vào và đầu ra có thể được xử lý thông qua bất kỳ giá trị trung bình hợp lý.

  • Đây là , vì vậy mã ngắn nhất tính theo byte trong mỗi ngôn ngữ sẽ thắng.


Các trường hợp thử nghiệm

Đầu vào 
Đầu ra

----------

"Kiểm tra", 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

----------

Bạn có thể tìm thấy một trường hợp thử nghiệm lớn hơn ở đây . Chúc may mắn và chơi golf vui vẻ!



1
Là một "danh sách các dòng" thay vì một chuỗi được phân tách bằng các dòng mới có hợp lệ không?
geokavel

21
Hmm, tôi không thấy cách "lạm dụng hành vi không xác định của nó" từ tiêu đề thực sự thể hiện trong nhiệm vụ. Không có hành vi không xác định, nhiệm vụ là tái tạo một hành vi được xác định khá cụ thể.
Paŭlo Ebermann

3
it fills an NxN square- Không phải là một tuyên bố chính xác.
Bạch tuộc ma thuật Urn

Câu trả lời:


9

Thạch , 4 byte

Lấy cảm hứng từ việc lạm dụng Jelly của ông Xcoder's

x⁹×Y

Một chương trình đầy đủ lấy chuỗi và số làm đối số dòng lệnh và in kết quả (vì là một liên kết dyadic, nó trả về một danh sách các chuỗi và ký tự dòng mới, có thể không thực sự được chấp nhận).

Hãy thử trực tuyến!

Làm sao?

Năm byter ngây thơ (không lạm dụng) là:

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)

Việc lạm dụng sử dụng bởi ông Xcoder (Python operator.mulcó thể hoạt động trên strintlặp lại str- nhân vật ở đây duy nhất - và các nguyên tử trong đó sử dụng nó, ×, vectorises WRT luận trái của nó) có thể được sử dụng ở đây quá để thay thế x€với ×- năng suất toàn bộ chương trình :

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 lạm dụng thách thức về lạm dụng
Erik the Outgolfer

9

Thạch , 5 byte

Đây chính xác là những gì chúng tôi được yêu cầu làm ... Lạm dụng hành vi không xác định! *

×+⁷×⁴

Hãy thử trực tuyến!

* Bằng hành vi không xác định, tôi đang nói về việc sử dụng ×để lặp lại chuỗi. Đôi khi nó ngắn hơn hành vi thông thường, vậy tại sao không?


Chết tiệt, đánh tôi một phút!
caird coinheringaahing

@cairdcoinheringaahing Tôi có cảm giác nó có thể được chơi gôn, mặc dù: - /
Ông Xcoder

1
Tôi đã sử dụng sự lạm dụng của bạn để đánh golf năm người khác xuống còn bốn
Jonathan Allan




3

PowerShell , 31 byte

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

Hãy thử trực tuyến!

Giải trình:

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



2

MATL , 5 byte

t&Y"!

Hãy thử trực tuyến!

Giải trình

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

2

C ++, 125 123 byte

-2 byte nhờ 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;}

Đảm bảo rằng quá tải của +=toán tử được gọi có charkiểu dữ liệu trong hướng dẫn nàyif(!(i++%b))r+=10


2
using s=std::string;ngắn hơn typedef std::string s;hai byte.
aschepler

2

Japt , 7 byte

Xuất ra một chuỗi các chuỗi.

VÆmpVÃy

Hãy thử nó ( -Rcờ cho mục đích trực quan hóa)


Giải trình

Đầu vào ngầm định của chuỗi Uvà số nguyên V.

VÆ    Ã

Tạo một mảng các số nguyên từ 0đến V-1và chuyển từng thông qua một hàm.

mpV

Ánh xạ ( m) qua Uvà lặp lại ( r) mỗi Vlần ký tự .

y

Chuyển đổi và ngầm định kết quả mảng.


1

R , 59 byte

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

Viết đến stdout.

Chia chuỗi thành các ký tự, lặp lại mỗi n^2lần, sau đó in với chiều rộng nvà không có dấu phân cách.

Hãy thử trực tuyến!


1

J, 15 14 byte

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

Sub-tối ưu cho chắc chắn. Trả về một mảng 2D của ký tự. Nhậnn làm đối số bên trái và chuỗi là bên phải.

Trên di động, vì vậy các tiện nghi thông thường bị thiếu.

Giải trình

(Đối với câu trả lời cũ)

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

$"1 0 định hình lại từng nhân vật để

(2#[)một ma trận n* n.

,/ nối các ma trận với nhau để mang lại đầu ra.



@miles rực rỡ! Tôi muốn nói rằng nó xứng đáng với câu trả lời của riêng cá nhân.
cole

@miles bài của bạn :)
Ven

1

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

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

Hãy thử trực tuyến!


Điều này dường như thay thế mỗi ký tự bằng một hàng ký tự nằm ngang, không phải bằng một hình vuông của các ký tự.
aschepler

Tôi đoán lúc đầu tôi không hiểu đúng. Đã sửa nó với thêm 5 byte.
Xcali


1

Than , 9 byte

FS«GTIηι↓

Hãy thử trực tuyến!

Giải trình

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

1

Brainfuck, 103 byte

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

Dùng thử trực tuyến (Đảm bảo bật bộ nhớ động hoặc nó sẽ không chạy)

Lưu ý: Đầu vào hơi khác nhau. Mã này nhận một chuỗi trong đó ký tự cuối cùng là một chữ số cho số lần lặp lại. Vì vậy, đầu vào có thể trông như thế nào Test5.

Mã này yêu cầu một băng không giới hạn và dựa vào hành vi gói byte.

Ung dung:

,[>,]< 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 cam kết 2940dbe , 4 byte

∙ι*I

Điều này được thực hiện cho một cam kết cụ thể, cụ thể là lần trước khi tôi thay đổi , khi được sử dụng trên một chuỗi các chuỗi, lặp lại mỗi chữ x lần để lặp lại mỗi mục x lần. Đây là trình thông dịch trực tuyến không có phiên bản đó, như có thể thấy, không hoạt động.

Để thử cam kết, tải xuống cái này , mở index.htmltệp, trong chương trình dán ∙ι*Ivà trong đầu vào viết một cái gì đó như

Test
2

Giải trình:

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

Nếu nó không hoạt động, tại sao liên kết?
isaacg

@isaacg câu hỏi hay. Đầu tiên tôi dự định viết những gì đã thay đổi, nhưng quên mất
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)));}

Hãy thử trực tuyến!


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

Đưa ra sự lặp lại như đối số bên trái và văn bản là đối số bên phải.

{⍺⌿⍺/⍪⍵}

Hãy thử trực tuyến!

{... } một lambda giấu tên nơi đại diện cho lập luận trái và lập luận đúng

⍪⍵ làm cho văn bản thành một bảng một cột

⍺/ nhân rộng thời gian theo chiều ngang

⍺⌿ nhân rộng thời gian theo chiều dọc


1

Japt , 7 byte

mpV² òV

Trả về một chuỗi các chuỗi.

Hãy thử trực tuyến! với-R cờ để tham gia mảng với dòng mới.

Giải trình

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 byte

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

Trả về toàn bộ đầu ra dưới dạng một chuỗi.

Không thể sử dụng TryItOnline vì 1.1 không được hỗ trợ

Kiểm tra

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

Sẽ là 84 nếu danh sách các chuỗi được chấp nhận làm đầu ra:

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

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)."
";

0

Toán học, 49 byte

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

đầu vào

["Kiểm tra", 4]


0

Bình , 12 byte

Đầu óc nhỏ bé, nhưng tôi chưa đến đó.

VQp*+*Nszbsz

Giải trình:

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

Phòng thử nghiệm


0

Clojure , 82 75 byte

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

Hãy thử trực tuyến!

Không nén

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

Chỉnh sửa: Cạo một vài ký tự ra khỏi đầu bằng cách thay thế một vòng lặp for bằng chức năng lặp lại stdlib.


0

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

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

Cũng bao gồm trong số byte:

using System.Linq;

Hãy thử trực tuyến!

Đầu ra là một tập hợp các bộ sưu tập các ký tự (một bộ sưu tập cho mỗi dòng).

Giải trình:

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
    )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.