Друк останнього, середнього та першого символів коду


60

Завдання проста: надрукуйте останній, середній та перший символи вихідного коду вашої програми в такому порядку.

Середній символ визначається наступним чином, передбачаючи довжину nсимволів джерела та 1-індексацію:

  • Якщо nпарне число, надрукуйте символ n/2-th та n/2 + 1-th. ( abcdef == cd)
  • Якщо nнепарне, друкуйте (n-1)/2 + 1-й символ. ( abcde == c)

Правила

  • З огляду на відсутність вводу, друкуйте останній, середній та перший символи у вихідному коді у формі [last][middle][first]. Це буде 3-4 символи.
  • Вихідні дані не повинні містити пробілів пробілу. Однак якщо пробіл є першим, середнім чи останнім символом, він повинен бути надрукований як такий.
  • Вихідний код повинен містити n >= 3символи.
  • Код повинен складатися з >= 3унікальних символів.
  • Стандартні лазівки заборонені.
  • Це , тому найкоротше рішення в символах виграє.

Зразки

# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1

Проблемна пропозиція


6
Можливо, це лише я, але "Код повинен складатися з> = 3 унікальних символів". припускає, що всі символи програми повинні бути унікальними, тоді як вам потрібно мати щонайменше 3 різних символи.
Grzegorz Oledzki

4
@Belhenix Менш ніж три унікальних символи дозволяють вирішити настільки ж просто, як і 121для багатьох мов.
Khuldraeseth na'Barya

2
Якщо хтось може знайти мову на основі стека, яка використовує -для заперечення і неявно друкує за допомогою рядка, \n1-це трибайт. Мій пошук поки що безрезультатний.
Khuldraeseth na'Barya

3
@Belhenix Whitespace, безумовно, можливий, він має достатньо унікальних дійсних символів (пробіл, передача ліній, вкладка).
bigyihsuan

2
Неможливо змінити його зараз 58-ма відповідями, але вимога "перша буква коду повинна відрізнятися від останньої літери коду" виключала б багато тривіальних відповідей, включаючи поточну верхню відповідь. Це, можливо, було задумом "> = 3 унікальних символу", але ця вимога насправді не дуже важка.
manassehkatz

Відповіді:


171

JavaScript, 9 7 байт

N=>a=-N

Виходи: NaN

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


4
Дуже розумний. Це був такт, який я намагався взяти, але просто не міг наткнутися на мову з досить кривим виведенням помилок.
ouflak

49
Це одна з найкращих відповідей на Javascript, яку я тут бачив
Даніель

21

Трава , 17 байт

wWWwwwVVwWWwWWWww

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

-2 байти завдяки jimmy23013.

Виходи www. Трава ігнорує всі символи, окрім w, Wта v. Таким чином, два Vs ігноруються; вони є там, щоб переконатися, що середній символ є w- я не маю уявлення, як вивести vчи Wв траві ... Я міг би використати інший символ замість V, але Vзберігає естетичність коду.


1
" На щастя, середній персонаж виявився aw, а не av або W - я не маю уявлення, як вивести v чи W в траву ... " Lol. xD Я намагався зробити щось подібне у Whitespace, маючи також лише три символи (пробіл, вкладка, новий рядок), але, на жаль, мені не так пощастило .
Кевін Круїссен

@KevinCruijssen Якби середній персонаж був чимось іншим, я, мабуть, додав би в середині кучу xs (або будь-якого іншого символу без трави, який Трава ігнорує), щоб перемістити wв потрібне місце.
Робін Райдер

Ах, я ідіот .. Я можу вставити непробільний символ, а також той, який Whitespace ігнорує. ;) -2 байти завдяки вам
Kevin Cruijssen

1
17 байт :wWWwww  wWWwWWWww
jimmy23013

@ jimmy23013 Дякую! І дякую, що опублікували пораду ; Мені це було потрібно, щоб зрозуміти, що ти зробив! Я змінив пробіли на Vs, тому що мені здається красивішим. ;-)
Робін Райдер

17

мозковий ебать , 17 байт

U-[>+<-UU--]>...U

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

З недрукованими версіями це може бути скорочено до 7 байт: ␀..␀_.␀


1
У межах правил, але BF не використовується Uяк інструкція. Функціонально код є -[>+<---]>., тому очікуваний вихід був би таким .--, який він не виводить.
bigyihsuan

16
@bigyihsuan, але вихідний код все ще містить Us, і цей інтерпретатор із задоволенням їх ігнорує. Чи не слід враховувати кожну відповідь, що містить коментарі або декілька пробілів (або що-небудь інше, що не обов'язково має значення для мови)?
dzaima

1
Чи не повинно бути U-[>+<-UU--]>...U? У своєму нинішньому вигляді код показує лише одну U
Helena

1
@Flater Так, тут вони використовуються для полегшення виклику, але чи не в цьому вся мета тегу коду-гольфу ? Багато відповідей тут лише полегшують їх роботу, додаючи пробіли / трейлінг пробілів, і взагалі в коді-гольф тут дозволено будь-що, що дотримується правил (і якщо я повинен був здогадатися, чи існувало правило, забороняє невикористані символи (визначаючи, які об'єктивно будуть це вже майже неможливо) означало б, що виклик все ще може лежати на 0 балі, і, ймовірно, також буде закритий).
dzaima

2
Чому ви просто не використовуєте ÿ-.ÿ..ÿ? Це для друку та коротке.
Доріан

17

Мова програмування Шекспіра , 119 байт

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

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

Друкує три пробіли. Без пробілів:

Мова програмування Шекспіра , 227 байт

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

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

Як і в моїй новій відповіді ІНТЕРКАЛ, ця команда побудована для того, щоб останній символ програми був таким же, як і середній (хоча в цьому випадку він також не є першим), відхиляючи другу половину коду, поки вони не матч. (Я не впевнений, чи міг би я сконструювати 46 в меншій кількості байтів, чи ні, чи міг би гольфувати інші частини першої половини більше.)


2
Я не очікував, що Шекспір ​​з'явиться для цього. Це чудово
bigyihsuan

1
Хотілося б, щоб я міг +1 лише для вивчення цієї мови!
Stilez

1
навіть у вихідних повідомленнях налагодження інтернет-перекладача, почуття гумору авторів показує: Попередження в рядку 2: очікується «розум»
dlatikay

1
163 байти для другої версії, закінчуючи на!
Робін Райдер

1
@UnrelatedString ОК, спасибі! Зроблено .
Робін Райдер

14

Python 2 , 13 11 байт


print' t' 

Щоб зробити пробіл чітким:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

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

-2 байти, завдяки wastl!


6
Обидва вихідні пробіли (новий рядок), що заборонено. Альтернатива Python 2: Спробуйте в Інтернеті!
wastl

Крім того, я не думаю, що це справедливо: Python вимагає, щоб у кінці коду був порожній новий рядок.
Geza Kerecsenyi

5
@GezaKerecsenyi Як я розумію, новий рядок в кінці вихідного коду - лише рекомендація. Див. PEP8.
mypetlion


@wastl Дякую! Виправлено.
TFeld

11

RProgN 2 , 3 байти

1
0

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

Я думаю, це справедливо?


Я здогадуюсь, 1і 0вони висуваються на стек, а потім неявна поп-друк в кінці програми? Так, це дійсно
bigyihsuan

2
@bigyihsuan, це я теж здогадуюсь; Я не знаю мови, я просто пам'ятаю, що вона робить такі речі: p
dzaima

@dzaima Haha, коли ви публікуєте відповідь і навіть не знаєте, як це працює. xD Я дійсно бачив RProgN кілька разів раніше зі старими [quine]викликами, перш ніж змінити правила quine .
Кевін Кройсейсен

Я вважаю, що це поліглот в tacLinux.
tsh

11

05AB1E , 7 5 байт


„ RR

Виходи R \n.

-2 байти, взявши натхнення з відповіді партії @Neil , тому обов'язково підтримайте його і!

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

Альтернатива 5 байт від @Grimy :


12,1

Виходи 12\n.

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

Початковий відповідь на 7 байт :

'?„«'«?

Виходи ?«'.

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

Пояснення:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline


8

3
Насправді, оскільки PHP видає код як текст до першого <?тегу, ви можете використовувати одне з тривіальних 4-байтних рішень на кшталт 1231- що завгодно, без спеціального символу як першого та останнього, будь-які інші 2 символи посередині. Ваша відповідь може бути найкоротшим реальним кодом відповіді PHP.
manassehkatz

7

Желе , 5 байт

001 0

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

Вихід має два різних символи, але код також має третій.

Тривіальна 4-байтна версія:

1231

Чи не є 121також дійсною тривіальною відповіддю?
Телепортація Кози

@TeleportingGoat: Ні, тому що у неї лише два чіткі персонажі
Олівер Ханкельн

7

Excel, 9 байт

=("))=" )

Стільки батьківських патентів.

Примітка: Повернений середній символ насправді може бути будь-яким символом, оскільки це середина коду.


Круглі скобки! (Лампочка) Я застряг із останнім персонажем, який потребує бути ". Молодці!
Верніш

Дякую! Це я намагався розібратися також, і тоді я згадав, що дужки будуть працювати.
william porter

6

Рубін , 6 байт


p " "

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

Це виводить " "плюс новий рядок. Код закінчується "символом a , середні два символи є і ", і він починається з нового рядка.


3
Мені подобається ваш знак, я вважаю, що це сірий масштаб на N². Я створив майже таку саму картину, щоб допомогти мені вирішити проблему Project Euler Nim. У вашого значка є історія?
Демієн

1
Приємний улов! Мені просто подобається «малювати» під час зустрічей, генеруючи малюнки за допомогою однокласників; xor був першим улюбленцем.
гістократ

6

Пакетна мова DOS / Windows, 9 байт

@echo @o@

Ласкаво просимо до коду обміну стеками викликів Golf & Coding Challenges, +1 за гарне перше повідомлення!
А _


5

Пакетна, 9 символів


@echo hh

Середній та останній символи є обома h, а потім echoза замовчуванням друкується новий рядок, який є першим символом сценарію.


5

PowerShell, 3 байти

00000000: 0a0d 31                                  ..1

Працює лише в Microsoft Windows.

Вихід, на жаль, 8 байт в UTF-16. Але питання говорить, виведіть символи, а не байти. Можливо, UTF-16 - це лише один із підтримуваних способів представлення символів у PowerShell. Вони не трактуються по-різному від файлу ASCII.


це розумна відповідь
mazzy

1
дозволено, тому що 0x0a != 0x0d != 0x31:)
bigyihsuan

5

Bash ( 15 11 символів)

echo -n e-e

який роздруковує

e-e
  • -4 знаки, не використовуючи |rev

1
@racraman Ваша запропонована редакція echo<space>e<space><space>eбуде виведена e<space>e<newline>замість e<space>e, тому я її відхилив. Новий рядок є частиною результату, тому GrzegorzOledzki використовує цей -nваріант. Спробуйте echo -n e-eонлайн - Спробуйте echo e eонлайн . І знову, будь ласка, не редагуйте відповідь інших людей. Якщо у вас є гольф, щоб запропонувати, залиште коментар.
Кевін Кройсейсен

також 11 байт з printf pfp, але тільки тому, що нам потрібні два пробіли завдяки цьому визначенню середнього символу, інакше було б 10 ...
pLumo


5

Низький навантаження , 9 байт 7 байт

Дякуємо Khuldraeseth na'Barya за вдосконалене рішення!

W(SSW)S

Як я можу сказати, це зараз неперевершено, оскільки:

  • Перший символ повинен бути символом неоперації, оскільки кожна інша інструкція викликає помилку через те, що стек порожній, за винятком відкриваючої дужки. Однак це не може бути, оскільки немає можливості вивести відкриваючу дужку самостійно в Underload.
  • Щоб додати 3 вивідні символи до стеку, потрібно використовувати щонайменше 5 символів.
  • Для його виведення потрібно використовувати S.

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


Ласкаво просимо до Code Golf SE! Ви можете заощадити пару байт, пропускаючи копію, як так .
Khuldraeseth na'Barya

5

Мова програмування Шекспіра , 163 153 байт

-10 байт завдяки Джо Кінгу.

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

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

Моя перша відповідь SPL! Виходи!BB .

Є інше відповідь SPL від Unrelated String; у цьому відповіді вони виводять лише пробіли в 119 байтах або виводять непробільні символи в 227 байт. Цей елемент знаходиться між ними, а також видає символи, які не містять пробілів.

Тут використовуються два хитрощі:

  1. !.!25+1. 46.
  2. Подвоєння 33 дає 66, кодову точку B, отже, заголовок гри є, Bі мені потрібен другий "великий", щоб бути "Великим", який працює, оскільки SPL не відрізняється від регістру.

Оскільки мені знадобився цей капітал Bі знак оклику в кінці, я вирішив кричати по сцені голосніше і голосніше Аякс.


4

4
Досить впевнений, 0 1 0він коротший, а також має три чіткі символи (я не хочу репостувати свій підхід до Jelly: P).
Ерік Аутгольфер

1
@EriktheOutgolfer Що ж! Але це так само, як і ваша відповідь, тому я залишу це так, як є
Луїс Мендо

2
Так, саме тому я прокоментував, що не дуже хотів двічі публікувати одне і те ж. (Гм ... це може бути оптимальним рішенням для багатьох мов.) У будь-якому випадку, ваше може бути застосоване і в інших місцях!
Ерік Аутгольфер

4

Befunge-93 , 7 байт

.",  @0

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

Пояснення

Вихід є 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output


4

Шеф-кухар , 447 байт

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

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

Серйозне подання, 196 177 байт

завдяки A__

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

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


Бачачи програми шеф-кухаря, я змушую мене замислитись, що є мінімальним для цього.
bigyihsuan

@bigyihsuan дивись мою редагування
user24343

Ви можете видалити всі "" "і змусити програму працювати .
А _

Я створив робочу програму. (177 байт)
A _

4

Python 3, 19 байт 13 байт


print( ')(')

Функція друку додає новий рядок за замовчуванням, тому код починається з нового рядка. Останній символ коду - це ")", тому він надрукується першим. Щоб кількість символів нерівномірна, перед аргументом функції друку вставляється пробіл. Вибачте, будь ласка, корисність коду.

Виходи: )(\n

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


1
Залежно від того, як працюють правила, у мене може бути 13 байт, що грають з вашою відповіддю: `print (") (")` Зауважте, що вище новий рядок printі пробіл всередині printпісля ")(". Виходи: )( з новим рядком в кінці.
Хуг

Дякую, до 13 байт! Оскільки питання конкретно стосується пробілів, але не нових рядків, я вважаю, що останні нові рядки, як endпараметр за замовчуванням функції друку, не враховуються.
jaaq

Це друкує останній рядок, але не враховує його.
А _

Не впевнений, чи вважаються нові рядки пробілами, але я додав 2-ю також 13-байтну версію.
jaaq

1
Так, нові рядки вважаються пробілами, як і вкладки та пробіли серед інших
Jo King

4

Пробіл , 31 29 байт

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

-2 байти завдяки @RobinRyder .

Букви S(пробіл), T(вкладка) та N(новий рядок) додаються лише як підкреслення.
[..._some_action]додано лише як пояснення.

Спробуйте це в Інтернеті (лише із необробленими пробілами, вкладками та новими рядками).

Містить не-оп a(може бути будь-яким символом без пробілу), щоб зробити довжину непарною. Він додається перед першою половиною програми, так що середній символ також є пробілом, оскільки середній символ став би новим рядком, якби він був на другій половині програми. Усі символи, що не містять пробілів, ігноруються в програмах Whitespace.



3

MathGolf , 5 4 байти

1231

-1 байт, використовуючи тривіальне рішення, представлене @ErikTheOutgolfer у своїй відповіді Jelly , яка працює на будь-якій мові з неявним виведенням без зворотнього нового рядка.

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

Оригінальна відповідь на 5 байтів :

ùù xx

Виходи x ù.

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

Пояснення:

ùù x   # Push 3-char string "ù x"
    x  # Reverse it to "x ù"
       # (output the entire string joined together implicitly without trailing newline)

3

Мозок-Флак , 11 байт

(((())))

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

Пояснення

Нам потрібно покласти 3 речі на стек. Найшвидший спосіб зробити це - поставити 3 1s (або нулі) на стек. Оскільки (кодова точка 1) нічого не робить у Brain-Flak, ми можемо додавати їх до програми на першому середньому та останньому місцях. Тепер це виглядає трохи хитро, тому ось ще два відповіді, які на мою думку менш обманливі.

Друкує брекети, 31 байт

( (((((()()()()()){}){}){}))())

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

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

Містить лише дужки, 32 байти

(((()((((()(()()){}){}){}){}))))

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

Це лише дужка, програма і джерело, і, як наслідок, висновок повністю складається з брекетів (персонаж Brain-Flak насправді переймається).


3

AsciiDots - 9 байт

.---$'.$.

Вихід: .$.

Код починається з a ., закінчується з a ., а середній символ - a $. Єдина цитата в середині задає режим точкового друку для простого читання символів прямо у вихідний потік.

Цілком можливо, що це можна було б зменшити, але я починаю сумніватися, що це може. Для того, щоб надрукувати три символи, слід використовувати єдину цитату, оскільки для подвійної лапки потрібно буде закінчити рядок. Однак це означає, що за однією цитатою слід: а) супроводжуватися трьома символами; б) не може бути центральним символом. Для того, щоб стиснути це до семи байтів, я розглядав спробу повторно використати початок точки як один із друкованих символів (на кшталт програми Quine AsciiDot). Однак я виявив, що найкоротша послідовність, доступна для друку, була($'який повинен був би надрукувати чотири символи з проміжком трьох, або три символи в пробілі чотирьох. Я також спробував деякі хиткі альтернативні методи, наприклад, намагаючись надрукувати значення точки (що дорівнює 0) як один із символів. Хоча може бути якась система, яка працює, я виявив їх досить складними та великими. Таким чином, я вважаю, що вищесказане - найменше рішення. (Я оновлю, якщо знайду щось менше)


Ласкаво просимо до Code Golf SE! Я кілька хвилин поспішав з цим і дійшов такого ж висновку, що і ви. Гарний перший пост!
Khuldraeseth na'Barya

1
Альтернативні 9 байт - /'$'-.[newline]\.спробуйте онлайн!
Аліон

3

MATLAB, 13 15 байт

disp(  ') d')

Виходи ) d

Попередня версія (15 байт, менш суворий вихід):

'''';1;''''''''

Виходи '''


Бачу зараз, тепер хвилююся.
Пшеничний майстер

Це не виводить пробіли пробілів?
Санчіз

@Sanchises nope, розмір (ans) == 3
жовтня день тиші

Так, але фактичний вихід є ans =\n '''\n. Зазвичай це не проблема, але, схоже, цей виклик встановлює суворіші стандарти. Але тоді я, можливо, трактую виклик неправильно.
Санчіз

@Sanchises хм, бачу. я можу неправильно зрозуміти, що codegolf вважає "виходом" тоді, ваш висновок здається буквально результатом, відформатованим MATLAB
жовтня день мовчання SE SE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.