Несправності мого пристрою ... Зловживайте його невизначеною поведінкою!


12

Довідка! Мій пристрій несправно працює, і коли я намагаюся повторити рядок, я отримую безладний результат. Замість того, щоб повторювати один і той же рядок N разів, він заповнює квадрат NxN кожним із своїх символів і складає квадратики вгору.

Наприклад, з огляду на рядок "Test"і число 2замість "TestTest", я отримую:

TT
TT
ee
ee
ss
ss
tt
tt

Побачивши це деякий час, мені стало подобатися. Ваше завдання сьогодні - відтворити цю дивну поведінку. З огляду на не порожню рядок, що складається тільки з друкованого ASCII, і додатне ціле число, виводить пристрій String my несправний функція.

  • Діють усі стандартні правила.

  • Введення та вихід можуть оброблятися за допомогою будь-якого розумного значення.

  • Це , тому найкоротший код у байтах на кожній мові виграє.


Випробування

Вхідні дані 
Вихідні дані

----------

"Тест", 2

TT
TT
ее
ее
сс
сс
тт
тт

----------

"UuU", 3

UUU
UUU
UUU
uuu
uuu
uuu
UUU
UUU
UUU

----------

"А", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

Ви можете знайти більш великий тест тут . Удачі та веселого гольфу!


Прикордонний дублікат мистецтва збільшити ASCII
Digital Trauma

1
Чи дійсний "список рядків" замість рядка, розділеного новими рядками?
geokavel

21
Гм, я не бачу, як "зловживає своєю невизначеною поведінкою" із заголовка насправді показує у завданні. Не визначеної поведінки немає, завдання полягає у відтворенні цілком конкретно визначеної поведінки.
Paŭlo Ebermann

3
it fills an NxN square- Не правильне твердження.
Чарівна восьминога урна

Відповіді:


9

Желе , 4 байти

Натхненний жорстоким зловживанням містера Xcoder

x⁹×Y

Повна програма, що приймає рядок та число як аргументи командного рядка та друкує результат (оскільки як діадичне посилання повертає список рядків та символів нового рядка, що може бути неприйнятним).

Спробуйте в Інтернеті!

Як?

Наївний (не зловживаючий) п’ять байт:

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)

Зловживання використовується г Xcoder (Пітона operator.mulможе діяти на strі 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 У мене є відчуття, що можна пограти в гольф: - /
Містер 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



2

MATL , 5 байт

t&Y"!

Спробуйте в Інтернеті!

Пояснення

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 байт

-2 байти завдяки асклеплеру

#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

Japt , 7 байт

Виводить масив рядків.

VÆmpVÃy

Спробуйте ( -Rпрапор лише для цілей візуалізації)


Пояснення

Неявне введення рядка Uі цілого числа V.

VÆ    Ã

Сформувати масив цілих чисел від 0до V-1і роз'їхатися з допомогою функції.

mpV

Показуйте ( m) Uі повторіть ( r) кожен Vраз.

y

Транспонуйте та неявно виведіть отриманий масив.



1

J, 15 14 байт

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

Суб-оптимальний точно. Повертає 2D масив символів. Приймає nяк лівий аргумент, а рядок - як правий.

По мобільному, тому звичайні зручності відсутні.

Пояснення

(Для старої відповіді)

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

$"1 0 переформатуйте кожен символ на

(2#[)n* nМатриця.

,/ об'єднайте матриці разом, щоб отримати результат.



@miles блискуче! Я б сказав, що особисто заслуговує на свою відповідь.
коул

@miles post your :)
Вен

1

Perl 5 , 26 + 1 (-p) = 27 байт

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

Спробуйте в Інтернеті!


Це, здається, замінює кожен символ горизонтальним рядом символів, а не квадратом символів.
aschepler

Напевно, спочатку я не зрозумів це правильно. Виправлено це додатковими 5 байтами.
Xcali



1

Brainfuck, 103 байт

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

Спробуйте в Інтернеті (переконайтеся, що увімкнено динамічну пам'ять, інакше вона не працюватиме)

Примітка. Вхід дещо інший. Цей код містить рядок, де останнім символом є цифра для кількості повторів. Отже, вхід може виглядати так Test5.

Цей код вимагає необмеженої стрічки і покладається на поведінку, що завершує байт.

Безголівки:

,[>,]< 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 байт

Приймає повторення як лівий аргумент, а текст - як правий аргумент.

{⍺⌿⍺/⍪⍵}

Спробуйте в Інтернеті!

{} Безіменна лямбда, де представляється лівий аргумент і правий аргумент

⍪⍵ переведіть текст у таблицю з одним стовпцем

⍺/ повторити часи горизонтально

⍺⌿ повторити часи вертикально






0

Котлін 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

PHP, 97 байт

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

0

Математика, 49 байт

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

вхід

["Тест", 4]


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

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
    )
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.