Мені знадобилося багато часу, щоб зробити це, будь ласка. (Коментарі 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, розділені новим рядком, щоб відповідати наступному шаблону:

(для s= "Привіт")

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
@Akhoy Я додав коментовану версію.
Арнольд

3
Дякую. Набагато зрозуміліше зараз.
Ахой

47

05AB1E (спадщина) ,  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для кожного ряду. Функція відображення рядка DOS API ( INT 21H,9) записує $на екран закінчену рядок, тому кожен раз через цикл символ після останнього для відображення змінюється кінцевим термінатором.

Лічильник циклу порівнюється з довжиною рядка, і якщо він більший (означає висхідну частину виводу), позиція string / swap збільшується, інакше вона зменшується (насправді це -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). Оновлено нову версію!
640 Кб

Чи потрібно вводити дату кожного разу, коли ви відкриваєте термінал?
користувач14492

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? Яка особливість?
alexis

7
@alexis Це використовуючи вираз присвоювання : x:=s[:n].
Арнольд

1
Ах, я бачу це тепер завдяки :-) Я читав про цю функцію раніше, з нетерпінням чекаю її. Ще пропустіть це з моїх днів C ...
alexis

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
[:(і }:,|виглядати так сумно…
Adám

Але це (}: яка щаслива людина з вигадливими вусами
DonFusili

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
@ceasedtoturncounter clockwis Ну, це Perl 6. Відповідь Perl 5 досі не читається
Jo King

12

Japt -R , 4 байти

å+ ê

Сукупне зменшення на рядку.

-1 байт завдяки @Shaggy

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


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

3
@FlyingThunder Будь скептичним не більше :) дивіться тут
Quintec

@Quintec, я взяв на себе зв'язок прапорів у своїх заголовках рішення з цією мета-публікацією, щоб спробувати викупити такі коментарі.
Кудлатий

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

@ ASCII-То ж, я пам’ятав це лише тому, що думав, як би це вирішити в APL, і сказав: «Цікаво, чи у Japt це вбудоване». Також я не користувався <мовою> -flag?
Квінтек

11

Japt -R , 9 7 байт

-2 байти завдяки Шаггі

Êõ@¯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або щось подібне.
Sriotchilism O'Zaic

@ SriotchilismO'Zaic Не був впевнений, чи потрібно це рахувати чи ні. Додано, дякую!
Йосиф Сибл

4
Крім того, я повинен зазначити, що у нас є чат для розмов про Haskell гольф. Якщо у вас є якісь думки чи питання, це прекрасне місце.
Sriotchilism O'Zaic

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, полягає в тому ;\ŒḄ, що кумулятивно зменшує ( \) конкатенацію ( ;), що є ще одним способом генерування префіксів.


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

@JonathanAllan дякую! дуже цікаво :)
Conor O'Brien

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

Ага. Добре, дякую, що вказали на це. Im new ¯_ (ツ) _ / ¯. Якщо це так, ось вам конкурентне рішення з 45 байтами:x=[s[:i+1]for i in range(len(s))];x+x[-2::-1]
Яден Травник

@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 # Interactive Compiler) , 123 109 94 84 74 байт

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

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

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



5

Брахілог (v2), 6 байт

a₀ᶠ⊆.↔

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

Подання функції, повертаючи масив рядків. На основі відповіді @ Fatalize .

Пояснення

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

Порядок Tiebreak тут встановлюється значком , який при використанні з цією схемою потоку віддає перевагу найкоротшому можливому виходу, пов'язаному розбиттям, розміщуючи задані елементи якомога раніше . Найкоротший можливий вихід - це те, що ми хочемо тут (через те, що неможливо мати жодних дублікатів префіксів), а розміщення заданих елементів (тобто префіксів) якомога раніше поставить їх у першу половину (округлену) вихід. Зважаючи на те, що ми також вимагаємо розмістити їх у тому самому порядку, ми можемо отримати саме той шаблон, який нам потрібен, хоча опис, який ми дали Брахілог, дуже загальний; переломи, як правило, спрацьовують правильно, змушуючи Брахілог вибирати потрібний нам результат, а не якийсь інший вихід, який підпорядковується опису.


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 - 10 000 символів. Гаразд, використовуйте це як верхню межу.

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

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


4

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

Функція анонімного негласного префікса. Повертає список рядків.

(⊢,1↓⌽),\

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

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

() Застосувати таку функцію до цього списку:

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

1↓ відкиньте перший предмет

, подавати

 немодифікований список




4

SNOBOL4 (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])

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

Вхід - a, stringа вихід - aseq<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реалізацію ви використовуєте та як передаєте їй вхід? (BTW, змінюючи заміну, щоб 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! Обов’язково прочитайте екскурсію та кодекс поведінки . Гарне рішення!
akozi

2
Для python ви можете використовувати ;s замість нових рядків, щоб уникнути відступу. Також немає необхідності в пробілах між printі''
Сріотчілізм О'Заїк,

Дякую за поради @ SriotchilismO'Zaic, дуже допомогла зменшити кількість байтів!
Йоні Мац

2
І останнє, що якщо ви робите aрядок, а не список, вам більше не потрібен joinі ви просто можете print a.
Sriotchilism O'Zaic

4
Недійсний, він повинен бути повноцінною програмою або функцією, тоді як ви припускаєте, що введення є в x.
Лише ASCII

4

J , 12 байт

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

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

Ще на 1 байт довше, ніж у Адама

K (oK) , 12 11 байт

-1 байт завдяки ngn

{x,1_|x}@,\

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


2
А я outgolf в master‽
адам

@ Adám Я далекий від того, щоб бути майстром J :) Тут багато кодерів J краще, ніж я.
Гален Іванов

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

@ngn Дякую!
Гален Іванов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.