Неисправности моего устройства ... Неправильное поведение строки!

12

Помогите! Мой аппарат неисправен, и всякий раз, когда я пытаюсь повторить строку, я получаю грязные результаты. Вместо того, чтобы повторять одну и ту же строку N раз, она заполняет квадрат NxN каждым из своих символов и складывает квадраты вверх.

Например, учитывая String "Test"и число 2, вместо "TestTest":

TT
TT
ee
ee
ss
ss
tt
tt

После того, как я увидел это некоторое время, мне это понравилось. Ваша задача сегодня - воспроизвести это странное поведение. Учитывая непустую строку, которая состоит только из печатного ASCII и положительного целого числа, выведите строку, возвращаемую моим неисправным устройством.

  • Все стандартные правила применяются.

  • Ввод и вывод могут быть обработаны любым разумным способом.

  • Это , поэтому выигрывает самый короткий код в байтах на каждом языке.


Тестовые случаи

вход 
Выход

----------

"Тест", 2

TT
TT
й
й
сс
сс
тт
тт

----------

"УуУ", 3

уУУ
уУУ
уУУ
ууу
ууу
ууу
уУУ
уУУ
уУУ

----------

"А", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

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


источник
Пограничный дубликат Enlarge ASCII art
Цифровая травма
1
Действителен ли «список строк» ​​вместо строки, разделенной символом новой строки?
геокавель
21
Хм, я не вижу, как "злоупотреблять своим неопределенным поведением" из названия на самом деле показывает в задаче. Не существует неопределенного поведения, задача состоит в том, чтобы воспроизвести вполне определенное поведение.
Пауло Эберманн
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 (Python operator.mulможет воздействовать на a strи an, 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
Джонатан Аллан
источник
хех оскорбления на вызов о насилии
Эрик Outgolfer
9

Желе , 5 байт

Это именно то, что нас просят сделать ... Злоупотреблять неопределенным поведением! *

×+⁷×⁴

Попробуйте онлайн!

* По неопределенному поведению я говорю об использовании ×для повторения строк. Иногда оно короче обычного поведения, так почему бы и нет?

Мистер Xcoder
источник
Блин, бей меня на минуту!
Кэрд 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
AdmBorkBork
источник
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 байта благодаря 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

HatsuPointerKun
источник
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

R , 59 байт

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

Пишет в стандартный вывод.

Разбивает строку на символы, повторяет каждый n^2раз, а затем печатает с шириной nи без разделителя.

Попробуйте онлайн!

Giuseppe
источник
1

J 15 15 байт

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

Неоптимальный наверняка. Возвращает двумерный массив символов. Принимает nв качестве левого аргумента, а строку в качестве правого.

На мобильном телефоне, поэтому обычные удобства отсутствуют.

объяснение

(Для старого ответа)

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

$"1 0 изменить каждый символ

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

,/ соединить матрицы вместе, чтобы получить выход.

капуста
источник
2
5 байт
мили
@ Мили блестящие! Я бы сказал, что заслуживает отдельного ответа лично.
Коул
@miles опубликовать ваше :)
Ven
1

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

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

Попробуйте онлайн!

Xcali
источник
Кажется, это заменяет каждый символ горизонтальным рядом символов, а не квадратом символов.
aschepler
Я думаю, что сначала я не понял это правильно. Исправлено это с дополнительными 5 байтами.
Xcali
1

Brainfuck, 103 байта

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

Попробуйте онлайн (убедитесь, что динамическая память включена, иначе она не запустится)

Примечание: вход немного отличается. Этот код принимает строку, где последний символ является цифрой для числа повторений. Таким образом, вход может выглядеть следующим образом 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 commit 2940dbe , 4 байта

∙ι*I

Это было сделано для конкретного коммита, а именно того, с которого я менялся , когда он использовался для массива строк, повторяя каждую букву х раз, чтобы повторять каждый элемент х раз. Вот онлайн-переводчик без этой версии, который, как видно, не работает.

Чтобы сделать коммит, скачайте его , откройте 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
dzaima
источник
Если это не работает, почему ссылка?
Исаак
@isaacg хороший вопрос. Сначала я намеревался написать что изменилось, но забыл
dzaima
1

Java 8, 152 128 118 100 байт

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

Попробуйте онлайн!

Роберто Грэм
источник
2
100 байт: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 (Дьялог) , 8 байт

Принимает повторение в качестве левого аргумента и текст в качестве правого аргумента.

{⍺⌿⍺/⍪⍵}

Попробуйте онлайн!

{... } безымянная лямбда, где представляет левый аргумент и правый аргумент

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

⍺/ повторять время по горизонтали

⍺⌿ копировать время по вертикали

Адам
источник
1

Japt , 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

Котлин 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("")}
jrtapsell
источник
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)."
";
jstnthms
источник
0

Mathematica, 49 байтов

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

вход

[ "Тест", 4]

J42161217
источник
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))))))

Редактировать: побрил несколько символов с конца, заменив цикл for функцией повтора stdlib.

luminous_arbour
источник
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
    )
Гжегож Пулавски
источник