Мне потребовалось много времени, чтобы сделать это, пожалуйста, как. (Комментарии YouTube № 1)


84

Подожди ..... это не троллинг.


Фон

В эти дни на YouTube разделы комментариев завалены такими шаблонами:

S
St
Str
Stri
Strin
String
Strin
Stri
Str
St
S

где String- просто заполнитель и относится к любой комбинации символов. Эти паттерны обычно сопровождаются чем-то It took me a lot of time to make this, pls likeили чем-то, и часто ФП удается накапливать множество лайков.


Задание

Несмотря на то, что вы обладаете огромным талантом накапливать отклики на PPCG с помощью своих очаровательных навыков игры в гольф, вы определенно не лучший выбор для создания остроумных замечаний или ссылок на мемы в разделах комментариев YouTube. Таким образом, ваши конструктивные комментарии, сделанные с осознанной мыслью, на YouTube набирают от нескольких до «лайков». Вы хотите, чтобы это изменилось. Таким образом, вы прибегаете к созданию вышеупомянутых шаблонов клише для достижения ваших конечных амбиций, но не теряете времени, пытаясь написать их вручную.

Проще говоря, ваша задача - взять строку, скажем s, и вывести 2*s.length - 1подстроки s, разделенные новой строкой, чтобы соответствовать следующему шаблону:

(for s= "Hello")

H
He
Hel
Hell
Hello
Hell
Hel
He
H

вход

Одна строка s. Входные значения по умолчанию сообщества применяются. Вы можете предположить, что входная строка будет содержать только печатные символы ASCII.


Выход

Несколько строк разделены новой строкой, образуя соответствующий шаблон, как описано выше. Выходные значения по умолчанию сообщества применяются. Допускаются начальные и конечные пробелы (не содержащие символов или символов, которые нельзя увидеть, например, пробел) в выходных данных.


Прецедент

Тестовый набор из нескольких слов:

Input => "Oh yeah yeah"

Output =>

O
Oh
Oh 
Oh y
Oh ye
Oh yea
Oh yeah
Oh yeah 
Oh yeah y
Oh yeah ye
Oh yeah yea
Oh yeah yeah
Oh yeah yea
Oh yeah ye
Oh yeah y
Oh yeah 
Oh yeah
Oh yea
Oh ye
Oh y
Oh 
Oh
O

Обратите внимание, что в форме выходных данных вышеприведенного тестового примера имеются явные искажения (например, вторая и третья строки выходных данных выглядят одинаково). Это потому, что мы не можем видеть конечные пробелы. Ваша программа не должна пытаться исправить эти искажения.


Критерий победы

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


19
Я планирую сделать еще несколько комментариев на YouTube, связанных с проблемами в будущем; следовательно, YouTube Comments #1в названии.
Арджун

1
Разрешен ли возврат массива строк?
кто-то

2
Можем ли мы взять ввод как массив символов и вернуть массив массивов символов?
лохматый


3
Может ли быть вход ""? А как насчет одного персонажа "H"? Если да, что должно быть получено в обоих случаях?
AdmBorkBork

Ответы:


103

брейкфук , 32 байта

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

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

Один и тот же цикл используется для обеих половин шаблона.

Объяснение:

,             Take first input character as initial line
[             Until line to output is empty:
  [<]>        Move to beginning of line
  [.>]        Output all characters in line
  ++++++++++. Output newline
  ,           Input next character
  [>>]        Move two cells right if input character nonzero
  <[-]        Otherwise remove last character in line
  <           Move to new last character in line
]

2
Это просто потрясающе. Я пытался сделать что-то в мозговом потоке, но это получалось примерно в 10 раз дольше и все еще не работало должным образом.
ElPedro

34
Никогда не думал, что увижу вызов, когда ответ «мозговит» на самом деле выиграл соревновательно, потрясающая работа!
Вопросительные знаки

54

JavaScript (ES6), 36 байт

f=([c,...r],s=`
`)=>c?s+f(r,s+c)+s:s

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

комментарии

f = (             // f is a recursive function taking:
                  //   the input string split into:
  [c,             //     c   = next character (may be undefined if we've reached the end)
      ...r],      //     r[] = array of remaining characters
  s = `\n`        //   the output string s, initialized to a linefeed
) =>              // 
  c ?             // if c is defined:
    s +           //   append s (top of the ASCII art)
    f(r, s + c) + //   append the result of a recursive call to f, using r[] and s + c
    s             //   append s again (bottom of the ASCII art)
  :               // else:
    s             //   append s just once (this is the final middle row) and stop recursion

3
очень хороший ответ: D
lois6b

10
@MartinBarker В Windows я использую Notepad ++ с установленным по умолчанию окончанием строки Unix (LF). Проблема решена раз и навсегда. :)
Арно

3
Потрясающие! Можете ли вы написать объяснение этого для тех, кто является новичком в JS?
Ахой

3
@ Ахой, я добавил закомментированную версию.
Арно

3
Спасибо. Теперь все прояснилось.
Ахой

47

05AB1E (legacy) ,  4  3 байта

Вычеркнуто &nbsp;4&nbsp;уже не 4 :)

η.∊

Попробуйте онлайн или проверьте все контрольные примеры .

Объяснение:

η     # Get the prefixes of the (implicit) input-string
 .∊   # Vertically mirror everything with the last line overlapping
      # (which implicitly joins by newlines in the legacy version of 05AB1E)
      # (and output the result implicitly)

В новой версии 05AB1E »требуется явное указание после η, поэтому я использую устаревшую версию 05AB1E для сохранения байта.


7
Хм, это похоже на 6 байтов в UTF8:\xce\xb7\x2e\xe2\x88\x8a
rubenvb

10
@rubenvb В UTF-8 это действительно больше. 05AB1E использует, как и некоторые другие языки программирования, используемые в других ответах (например, Jelly; Japt; Charcoal), свой собственный исходный код (например, CP-1252 в случае 05AB1E), где каждый из 256 известных ему символов является один байт.
Кевин Круйссен

Хорошо, достаточно справедливо :).
rubenvb

@KevinCruijssen PHP, кажется, считает, что эти символы недопустимы для CP-1252, но может быть просто ошибкой PHP: 3v4l.org/UC1QE
hanshenrik

7
@hanshenrik Хороший вопрос. Это действительно не CP-1252, а фактически кодировка 05AB1E , которая является пользовательской кодировкой, которую он использует. Это шестнадцатеричные байты этого кода 08 2e 17, которые вы можете запустить и проверить с помощью --osabieфлага: tio.run/…
Adnan

21

IBM PC DOS, сборка 8088,  44  43

d1ee ad8b d6b4 0948 8af8 8ac8 d0e1 49b3 243a cf7d 024e
4e46 861c cd21 861c 52ba 2901 cd21 5ae2 eac3 0d0a 24

разобранное:

    SHR  SI, 1              ; point SI to DOS PSP at 80H (SI intialized at 100H)
    LODSW                   ; load arg length into AL, advance SI to 82H
    MOV  DX, SI             ; save start of string pointer
    MOV  AH, 9              ; DOS API display string function
    DEC  AX                 ; remove leading space from string length
    MOV  BH, AL             ; save string len in BH (AL gets mangled by INT 21H,9)
    MOV  CL, AL             ; set up loop counter in CL
    SHL  CL, 1              ; number of lines = 2 * string length - 1
    DEC  CX
    MOV  BL, '$'            ; end of string marker
LINE_LOOP:
    CMP  CL, BH             ; if CL >= string length, ascend
    JGE  ASCEND
    DEC  SI                 ; descend by backing up two places (always increments)
    DEC  SI                 ; (this is fewer bytes than 'SUB SI, 2' or two branches)
ASCEND:
    INC  SI                 ; increment current string position
    XCHG BL, [SI]           ; swap current string byte with end of string delimiter
    INT  21H                ; write substring to console
    XCHG BL, [SI]           ; restore string byte
    PUSH DX                 ; save output string pointer
    MOV  DX, OFFSET CRLF    ; load CRLF string
    INT  21H                ; write to console
    POP  DX                 ; restore output string pointer
    LOOP LINE_LOOP          ; move to next line
    RET
CRLF DB 0DH,0AH,'$'

объяснение

Петля 2 * input length - 1для каждого ряда. Функция отображения строки API DOS ( INT 21H,9) записывает $на экран строку, определяемую окончанием, поэтому каждый раз в цикле символ после последней отображаемой строки заменяется символом конца строки.

Счетчик цикла сравнивается с длиной строки, и, если она больше (имеется в виду восходящая часть вывода), позиция строки / свопа увеличивается, в противном случае она уменьшается (на самом деле это -1-1+1меньше байтов, чем в разветвленной структуре if / else).

Автономная исполняемая программа, принимает входную строку из командной строки.

Выход

введите описание изображения здесь

Загрузить YT2.COM (43 байта)


1
Большинство версий DOS имеют SI = 100h при загрузке COM-файла. Это может сэкономить вам байт, заменив первую инструкцию на SHR SI, 1.
гастропнер

@gastropner очень умный! Оказывается, что оригинал не будет работать на DOS 1.0 в любом случае, так как он рассчитывает на то, что CH равен 0 (для инициализации потребуется +2 байта, что не стоит только для DOS 1). Обновлено с новой версией!
640KB

Вам нужно вводить дату каждый раз, когда вы открываете терминал?
user14492

1
@ user14492 га, нет! Я просто забыл вырезать эту часть из скриншота DOS!
640 КБ

19

Python 2 , 60 52 байта

f=lambda s,n=1:s[n:]and[s[:n]]+f(s,n+1)+[s[:n]]or[s]

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

Python 3.8 (предварительная версия) , 50 байт

f=lambda s,n=1:s>(x:=s[:n])and[x,*f(s,n+1),x]or[s]

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


2
Зависит ли это от предстоящей возможности 3.8? Какая особенность?
Алексис

7
@alexis Это используя выражение присваивания : x:=s[:n].
Арно

1
Ах, теперь я вижу это спасибо :-) Я читал об этой функции раньше, с нетерпением жду ее. Все еще скучаю по моим C дням ...
Алексис

1
Они не печатают вывод, хотя. Они просто делают массив, верно?
Джейден Травник

@JadenTravnik Python автоматически дублирует последний результат выражения, если работает в интерактивном режиме через консоль
Xeverous

18

MATL , 8 байт

nZv"G@:)

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

Пожалуйста, как этот пост для смайлика :)в коде, это заняло у меня много времени, чтобы сделать.

n  % Length of the input string
Zv % Symmetric range ([1 2 ... n ... 1])
"  % For each k in above range
G  % Push input
@: % Push [1 2 ... k]
)  % Index

17

J 11 байт

Функция анонимного молчаливого префикса. Возвращает заполненную пробелами матрицу символов.

[:(}:,|.)]\

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

]\ список префиксов

[:(... ) применить следующую функцию к этому списку

|. обратный список

, с добавлением

}: свернутый (без последнего элемента) список


18
[:(и }:,|выглядишь так грустно ...
Адам

Но это (}: это счастливый человек с причудливыми усами
ДонФусили

13

Perl 6 , 31 байт

{[\~](@_)[0...@_-1...0]}o*.comb

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

Блок анонимного кода, который принимает строку и возвращает список строк.

Объяснение:

{                      }o*.comb   # Pass the list of characters into the codeblock
 [\~](@_)                 # Triangular reduce by concatenation
                          # e.g. The list [1,2,3,4] turns into [1,12,123,1234]
         [0...@_-1        # Return the elements from 0 to length of string minus 1
                  ...0]   # And back down to 0

5
Забавно, что в наши дни Perl даже в гольф входит в число самых читаемых участников.
перестал поворачивать против часовой стрелки

7
@ceasedtoturncounterclockwis Ну, это Perl 6. Ответ на Perl 5 все еще не читается
Джо Кинг,

12

Japt -R , 4 байта

å+ ê

Кумулятивное уменьшение по струне.

-1 байт благодаря @Shaggy

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


Скептик по поводу "-R", который должен быть включен в строку (без него вывод не работает)
Flying Thunder

3
@FlyingThunder Не будь скептиком больше :) см. Здесь
Quintec

@Quintec, я попытался связать флаги в заголовках моего решения с этим мета-сообщением, чтобы попытаться исключить подобные комментарии.
Лохматый

1
Довольно уверенное соглашение - <language> + -flagили <language> -flag. Также: | Я забыл, что кумулятивное уменьшение было чем-то, клянусь, я пропускал его каждый раз, когда видел его
только ASCII

@ ASCII-only То же самое, я вспомнил об этом только потому, что думал о том, как решить эту проблему в APL, и сказал: «Интересно, есть ли у Japt такая встроенная функция». Кроме того, я не использовал <язык> -flag?
Quintec

11

Japt -R , 9 7 байт

-2 байта благодаря Shaggy

Êõ@¯XÃê

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



1
@ Shaggy о, подождите ... Ãэто вещь
только ASCII

Еще 300 представителей будут в пути, как только этот вопрос получит право на награду.
Лохматый


1
@Quintec, кумулятивное сокращение работает и со строками, поэтому вам не нужно разбивать в начале. Я также сказал бы, что это достаточно отличается, чтобы гарантировать отправку самостоятельно.
лохматый


10

Haskell, 52 50 44 байта

f x=unlines$init<>reverse$scanr(\_->init)x x

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


Добро пожаловать на сайт. initsтребует использования импорта, так что вам нужно будет добавить import Data.Listили что-то подобное.
Пшеничный волшебник

@ SriotchilismO'Zaic Не был уверен, нужно ли это считать или нет. Добавлено, спасибо!
Джозеф Сибл

4
Также я должен упомянуть, что у нас есть чат для разговоров по игре в гольф на Хаскеле. Если у вас есть какие-либо мысли или вопросы, это отличное место.
Пшеничный волшебник

1
Я не могу поверить, что вы придумали именно то, что я собирался опубликовать:import Data.List putStr.unlines.((++)<*>reverse.init).tail.inits
Axman6

9

R , 79 65 62 58 байт

write(substring(s<-scan(,""),1,c(1:(r=nchar(s)),r-1:r)),1)

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

-14 от превосходного знания функций Джузеппе

-3 с более чистой индексацией

-4 благодаря Ник Кеннеди и Джузеппе переездом в scanиwrite

Избегать петель (и substr) это хорошо.


2
циклы совершенно не нужны, как есть sapply- substringбудем делать то, что вы хотите (с дополнительной завершающей пустой строкой), и за 65 байтов ! Я бы точно не подумал, substringесли бы не увидел твоего милого использования substrздесь.
Джузеппе

1
Хаха, хороший улов! Я думаю, что из ваших правок я узнал больше об альтернативных функциях для той же работы, чем где-либо еще.
Преступно-

2
Ха-ха, R имеет глупое количество синонимов с тонкими различиями. Каждый раз, когда я чувствую, что знаю лучший инструмент для работы, я нахожу что-то еще, что немного лучше в странном крайнем случае ...
Джузеппе

3
Как насчет попробовать онлайн! используя scanи write? Всего 59 байт!
Ник Кеннеди

1
@NickKennedy 58 байт, если заменить ""на 1.
Джузеппе

7

Желе , 5 4 байта

-1 байт благодаря @JonathanAllan !

¹ƤŒḄ

Попробуйте онлайн! Я думаю, что это мой второй ответ желе? Я не знаю, является ли это оптимальным. Я больше убежден в том, что это оптимально. Возвращает массив строк.

объяснение

¹ƤŒḄ     input: "Hi!"
¹Ƥ       prefixes of the input: [["H"], ["H", "i"], ["H", "i", "!"]]
  ŒḄ     bounce, using each array: [["H"], ["H", "i"], ["H", "i", "!"], ["H", "i"], ["H"]]

Другой подход, предложенный @JonathanAllan, заключается в том ;\ŒḄ, что кумулятивно уменьшает ( \) concatenation ( ;), что является еще одним способом генерирования префиксов.


Мы позволили дать массив строк, так что вы можете поднять Yиз кода (я бы сделать колонтитул либо ÇYили , ÇŒṘчтобы избежать неявную разящую печати в полных программах). На сопроводительной записке это также эквивалентно реализовано, как и ;\ŒḄдля того же подсчета байтов (также вы можете передать аргумент так, "blah"как Jelly интерпретирует его как список символов - ваш, собственно, список списков символов, как вы увидите если вы сделаете нижний колонтитул ÇŒṘ)
Джонатан Аллан

@JonathanAllan спасибо! очень интересно :)
Конор О'Брайен

7

Python 3.8 (предварительная версия) , 48 байт

lambda s,r='':(l:=[r:=r+c for c in s])+l[-2::-1]

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

Использует выражения присваивания с, :=чтобы накапливать список префиксов, а затем снова, чтобы сохранить результат, чтобы объединить его реверс (без первого символа).

Python 2 , 51 байт

f=lambda s,l=[]:s and f(s[:-1],[s]+l)or l+l[-2::-1]

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

У нас почти есть следующее хорошее 45-байтовое решение, но оно дважды содержит исходную строку, и я не вижу короткого пути, чтобы это исправить.

f=lambda s,l=[]:s and f(s[:-1],[s]+l+[s])or l

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


Разве вам не нужно добавлять новую строку и печатать, чтобы получить желаемый результат?
Джейден Травник

Что то типа print('\n'.join(f(s))) ?
Джейден Травник

@JadenTravnik Значения по умолчанию сообщества (которые следует за этой задачей) позволяют использовать функции в дополнение к программам. И автор испытания сказал в комментариях, что они в порядке со списком строк в соединении, как разрешено по умолчанию , хотя мне самому не нравится это как значение по умолчанию , и я проголосовал за него. Смотрите также свод правил Python .
XNOR

Да. Хорошо, спасибо за указание на это. Я новый ¯_ (ツ) _ / ¯. Если это так, вот конкурирующее 45-байтовое решение:x=[s[:i+1]for i in range(len(s))];x+x[-2::-1]
Jaden Travnik

@JadenTravnik Нет проблем, правила, к сожалению, разбросаны по всему месту. Ваш пример, хотя это фрагмент, который не разрешен. Он должен делать ввод и вывод, как s=input();x=[s[:i+1]for i in range(len(s))];print x+x[-2::-1]. Смотрите примеры в верхней части здесь .
XNOR

6

Древесный уголь , 5 байт

G^Lθθ

Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение: рисует заполненный многоугольник, ^указывает, что стороны находятся внизу вправо и вниз влево (многоугольник затем автоматически закрывается сам), Lθуказывает длину этих сторон как длину исходного ввода, а финал θзадает строку заливки.


6

C # (интерактивный компилятор Visual C #) , 123 109 94 84 74 байта

Предполагается, что мы можем вернуть массив массивов символов (я полагаю, что это возможно, поскольку массив символов является допустимым представлением для строки, а массив строк является допустимым представлением для нескольких строк).

a=>new int[a.Length*2-1].Select((b,i)=>a.SkipLast(Math.Abs(a.Length-i-1)))

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



5

Brachylog (v2), 6 байт

a₀ᶠ⊆.↔

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

Передача функции, возвращающая массив строк. Свободно, основываясь на ответе @ Fatalize .

объяснение

a₀ᶠ⊆.↔
    .↔  Find a palindrome
   ⊆      that contains, in order,
  ᶠ       all
a₀        prefixes of {the input}

Порядок временного разбиения здесь задается параметром , который при использовании с этим шаблоном потока предпочитает минимально возможный выходной сигнал, срывая связь, размещая заданные элементы как можно раньше . Кратчайший возможный вывод - это то, что мы хотим здесь (из-за невозможности иметь какие-либо дубликаты префиксов), и размещение данных элементов (то есть префиксов) как можно раньше поместит их в первую половину (с округлением в большую сторону) выход. Учитывая, что мы также требуем, чтобы они были расположены в том же порядке, мы получаем именно тот шаблон, который нам нужен, хотя описание, которое мы дали Brachylog, очень общее; разрывы связей оказываются совершенно правильными, в результате чего Brachylog выбирает нужный нам вывод, а не какой-либо другой вывод, который подчиняется описанию.


5

PowerShell, 89 87 66 байт

-2 байта благодаря @AdmBorkBork

param($a)0..($d=$a.Length-1)|%{$b+=,-join$a[0..$_]};$b+$b[--$d..0]

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

Это на самом деле не работает, как указано ранее, извините за это! Я отредактировал это и также сумел сбрить некоторые байты.


Вы можете --$dвместо того, ($d-1)чтобы сохранить пару в конце.
AdmBorkBork

@AdmBorkBork Спасибо.
Габриэль Миллс

К сожалению, это не работает для односимвольного ввода.
AdmBorkBork

5

PowerShell , 46 байт

($l=$args|% t*y|%{($s+=$_);++$i})+$l[$i..0]|gu

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


PowerShell , 42 байта (YouTube особенный, грязный)

Известно, что максимальная длина комментария на YouTube составляет 10000 символов. Хорошо, используйте это как верхний предел.

($l=$args|% t*y|%{($s+=$_)})+$l[1e4..0]|gu

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


4

APL (Dyalog Unicode) , 9 байтов SBCS

Функция анонимного молчаливого префикса. Возвращает список строк.

(⊢,1↓⌽),\

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

,\ список префиксов (горит, накопленная конкатенация)

() Применить к этому списку следующую функцию:

 перевернутый список

1↓ брось первый предмет

, перед именем

 неизмененный список




4

СНОБОЛ4 (CSNOBOL4) , 118 байт

	N =INPUT
	L =1
1	X =LT(X,SIZE(N)) X + 1	:F(D)
O	N ARB . OUTPUT POS(X)	:($L)
D	X =GT(X) X - 1	:F(END)
	L ='D'	:(O)
END

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

Кажется, есть ошибка в этой реализации SNOBOL; попытка заменить ярлык Dна ярлык 2приводит к ошибке, хотя в руководстве для Vanilla SNOBOL это указывается (выделение добавлено)

Если присутствует метка, она должна начинаться с первого символа строки. Метки дают имя для оператора и служат в качестве цели для передачи управления из поля GOTO любого оператора. Метки должны начинаться с буквы или цифры, за которыми может следовать произвольная строка символов. Поле метки завершается символом пробела, табуляции или точки с запятой. Если первый символ строки пустой или табуляция, поле метки отсутствует.

Я предполагаю, что интерпретатор CSNOBOL поддерживает только одну метку, которая начинается с целого числа.


4

APL + WIN, 31 байт

Запрашивает ввод строки:

 ⊃((⍳n),1↓⌽⍳n)↑¨(¯1+2×n←⍴s)⍴⊂s←⎕

Объяснение:

(¯1+2×n←⍴s)⍴⊂s create a nested vector of the string of length =1+2x length of string

((⍳n),1↓⌽⍳n)↑¨ progressively select elements from each element of the nested vector 
              following the pattern 1  2 ...to n to n-1 ... 1

⊃ convert nested vector into a 2d array.

4

F # (.NET Core) , 67 61 байт

let l=s.Length
[1..l*2-1]|>Seq.map(fun i->s.[..l-abs(i-l)-1])

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

Вход является, stringа выход являетсяseq<string>

Другое решение может быть let f(s:string)=for i=1 to s.Length*2-1 do printfn"%s"s.[..s.Length-abs(i-s.Length)-1]для 80-байтовых байтов ... Я не уверен, что это стоит посмотреть.


4

sed , 31 35 байт

:x
h
s/.\n.*\|.$//
/^$/{x;q}
H
G
bx

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

объяснение

В начале каждой итерации цикла пространство шаблонов представляет собой некоторый «центральный фрагмент» желаемого вывода, и каждый цикл добавляет сокращенную копию вверху и внизу.

:x                 
h                  Copy the current chunk to hold space
s/.\n.*\|.$//      Remove the last letter of the first line, and all other lines (if there are any)
/^$/{x;q}          If pattern space is empty we're done; output hold space
H                  Add the shortened line to the end of hold space
G                  and add the new hold space to pattern space.
bx                 

1
Хороший, но средняя строка (полный исходный ввод), кажется, выводится 3 раза. По крайней мере, с GNU sed. То же самое на TIO. Какую sedреализацию вы используете и как вы передаете ей вход? (Кстати, меняя замену, чтобы s/.\n.*\|.$//
исправить

2
Ах, ты прав. Это не проблема с моей sedреализацией (с использованием GNU версии 4.2.1), я просто не заметил ошибку. Я поиграл с некоторыми другими исправлениями и не могу найти ничего, что добавляет менее четырех байтов, поэтому я принимаю ваше исправление, спасибо.
София Лехнер

4

Python 2 , 131 100 84 байта

Мой первый ответ на Code Golf!

-47 байт в целом благодаря @ SriotchilismO'Zaic

a,b=[],len(x)
for i in range(2*b-1):
 if i<b:a+=x[i]
 else:a=a[:-1]
 print''.join(a)

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


1
Добро пожаловать в PCG! Обязательно прочитайте тур и кодекс поведения . Хорошее решение!
Акози

2
Для python вы можете использовать ;s вместо новых строк, чтобы избежать отступов. Также нет необходимости в пробелах между printи''
Wheat Wizard

Спасибо за советы @ SriotchilismO'Zaic, которые действительно помогли уменьшить количество моих байтов!
Йони Мац

2
И последнее: если вы создаете aстроку, а не список, вам больше не нужен joinвообще, и вы можете просто print a.
Пшеничный волшебник

4
Неверно, это должна быть полная программа или функция, в то время как вы предполагаете, что вход находится в x.
Только для ASCII

4

J , 12 байт

]\,[:}.@|.]\

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

Все еще на 1 байт длиннее, чем у Адама

K (ок) , 12 11 байт

-1 байт благодаря ngn

{x,1_|x}@,\

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


2
Разве я обошел хозяина?
Адам

@ Adám Я далёк от того, чтобы быть мастером J :) Здесь много J-кодеров лучше, чем я.
Гален Иванов

1
-1 байт для ОК:{x,1_|x}@,\
ngn

@ngn Спасибо!
Гален Иванов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.