Напечатайте последний, средний и первый символ вашего кода


60

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

Средний символ определяется следующим образом, принимая исходную длину nсимволов и индексирование 1:

  • Если nчёт, выведите n/2-й и n/2 + 1-й символ. ( 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 различных символов.
Гжегож Оледзки

4
@Belhenix Менее чем три уникальных символа позволяют решения, столь же простые как 121для очень многих языков.
Хулдрасет на'Барья

2
Если кто-то может найти основанный на стеке язык, который использует -отрицание и неявно печатает с \n1-переводом строки, это трехбайтовый код. Мой поиск до сих пор был бесплодным.
Хулдрасет на'Барья

3
Пробел @Belhenix, безусловно, возможен, в нем достаточно уникальных допустимых символов (пробел, перевод строки, табуляция).
bigyihsuan

2
Не может изменить его сейчас с 58 ответами, но требование «первая буква кода должна отличаться от последней буквы кода» исключило бы множество тривиальных ответов, включая текущий топ-ответ. Возможно, это было намерением "> = 3 уникальных символа", но это требование на самом деле не очень сложное.
Manassehkatz

Ответы:


171

JavaScript, 9 7 байт

N=>a=-N

Выходы: NaN

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


4
Очень умно. Это был такт, который я пытался применить, но просто не мог наткнуться на язык с достаточно кратким выводом ошибок.
Офлак

49
Это один из лучших ответов на Javascript, который я когда-либо видел здесь
Даниэль

21

Трава , 17 байт

wWWwwwVVwWWwWWWww

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

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

Выходы www. Трава игнорирует все символы , кроме w, Wи v. Таким образом, два Vс игнорируются; они там, чтобы гарантировать, что средний символ - это w- я не знаю, как выводить vили Wв Grass… я мог бы использовать другой символ вместо V, но Vсохранил эстетику кода.


1
« К счастью, средний персонаж в итоге оказался aw, а не av или W - я понятия не имею, как вывести v или W в Grass… » Lol. xD Я пытался сделать что-то похожее в Whitespace, в котором также было всего три символа (пробел, табуляция, новая строка), но, к сожалению, мне не так повезло ... К счастью, я могу просто добавить несколько завершающих операций, чтобы исправить это.
Кевин Круйссен

@KevinCruijssen Если бы средний символ был чем-то еще, я бы, вероятно, добавил бы в середину группу xs (или любой другой символ не-Grass, который Grass игнорирует), чтобы переместить a wв правильное место.
Робин Райдер

Ах, я идиот ... Я также могу вставить непробельный символ, который будет игнорироваться. ;) -2 байта благодаря тебе.
Кевин Круйссен

1
17 байтов :wWWwww  wWWwWWWww
jimmy23013

@ jimmy23013 Спасибо! И спасибо за размещение вашего совета ; Мне нужно было это понять, что ты сделал! Я изменил пробелы на Vs, потому что нахожу это красивее. ;-)
Робин Райдер

17

мозговой трах , 17 байтов

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

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

Для непечатаемых файлов это можно уменьшить до 7 байт: ␀..␀_.␀


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

16
@bigyihsuan, но исходный код все еще содержит Us, и этот интерпретатор счастливо игнорирует их. Должен ли учитываться каждый ответ, имеющий комментарии или несколько пробелов (или что-либо еще, что не обязательно имеет значение для языка)?
Дзайма

1
Не должно ли это быть U-[>+<-UU--]>...U? В своем текущем виде код показывает только одну U
Helena

1
@Flater Да, здесь они используются, чтобы облегчить задачу, но не в этом ли цель тега code-golf ? Многие ответы здесь сами по себе облегчают их работу, добавляя начальные / конечные пробелы, и вообще в коде-гольфе здесь разрешено все, что следует правилам (и если бы мне пришлось угадывать, было ли правило, запрещающее неиспользуемые символы (определение которого объективно уже было бы почти невозможно) означало бы, что вызов может все еще зависать при 0 баллах, и, вероятно, также будет закрыт).
Дзайма

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.

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

Как и в моем ответе INTERCAL без перевода строки, это сделано для того, чтобы последний символ программы был таким же, как и средний символ (хотя в данном случае это не также первый символ), удаляя вторую половину кода, пока они матч. (Я не уверен, мог ли я построить 46 в меньшем количестве байтов или нет, или я мог бы сыграть в гольф другие части первой половины больше.)


2
Я не ожидал, что Шекспир появится для этого. Это здорово
bigyihsuan

1
Жаль, что я мог +1 только для изучения этого языка!
Стилез

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 требует, чтобы у вас был пустой символ новой строки в конце вашего кода.
Геза Кереценый

5
@GezaKerecsenyi Насколько я понимаю, перевод строки в конце исходного кода - это просто рекомендация. Смотрите PEP8.
Mypetlion


@wastl Спасибо! Исправлена.
TFeld

11

RProgN 2 , 3 байта

1
0

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

Я думаю, что это действительно?


Я думаю, 1и 0помещаются в стек, а затем неявная всплывающая печать в конце программы? Да, это действительно
bigyihsuan

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

@dzaima Ха-ха, когда вы публикуете ответ, и вы даже не знаете, как он работает. xD Я действительно несколько раз видел RProgN со старыми [quine]испытаниями, пока не изменились правила quine.
Кевин Круйссен

Я считаю, что это полиглот в tacLinux.
TSH

11

05AB1E , 7 5 байтов


„ RR

Выходы R \n.

-2 байта, черпая вдохновение в ответе @Neil 's Batch , так что не забудьте также поддержать его!

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

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

PHP , 9 байт

<?=";;<";

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


3
На самом деле, поскольку PHP выводит код в виде текста до первого <?тега, вы можете использовать одно из тривиальных 4-байтовых решений, например: 1231все без специального символа в качестве первого и последнего, любые другие 2 символа в середине. Ваш ответ может быть кратчайшим реальным кодом PHP-ответа.
Manassehkatz

7

Желе , 5 байт

001 0

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

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

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

1231

Разве это не 121правильный тривиальный ответ?
Телепортирующаяся коза

@TeleportingGoat: Нет, потому что в нем только два разных персонажа
Оливер Ханкелн

7

Excel, 9 байт

=("))=" )

Так много скобок.

Примечание: возвращенный средний символ может фактически быть любым символом, так как это середина кода.


Скобки! (Лампочка) Я застрял с последним персонажем, который должен быть ". Отлично сработано!
Верниш

Спасибо! Это было то, что я тоже пытался выяснить, и потом я вспомнил, что скобки сработают.
Уильям Портер

6

Рубин , 6 байт


p " "

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

Это выводы " "плюс перевод строки. Код оканчивается на a ", средние два символа - и ", и начинается с новой строки.


3
Мне нравится ваш значок, я думаю, что это NX в оттенках серого. Я сгенерировал почти такую ​​же картинку, чтобы помочь мне в решении проблемы Project Euler Nim. У вашего значка есть история?
Дэмиен

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

6

DOS / Windows Batch Language, 9 байтов

@echo @o@

Добро пожаловать на страницу обмена стеками Code 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.


это умный ответ
Маззи

1
разрешено потому что 0x0a != 0x0d != 0x31:)
bigyihsuan

5

Баш ( 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 нет возможности самостоятельно вывести открывающую скобку.
  • Вам нужно использовать как минимум 5 символов, чтобы добавить 3 выходных символа в стек.
  • Вам нужно использовать S для вывода.

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


Добро пожаловать в Code Golf SE! Вы можете сохранить пару байтов, пропустив копию, вот так .
Хулдрасет на'Барья

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.
  2. Удвоение 33 дает 66, кодовую точку B, следовательно, название игры - Bи мне нужно, чтобы второй «большой» был «Большой», который работает, так как SPL нечувствителен к регистру.

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


4

CJam , 7 байтов

'@'' _@

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


4
0 1 0Я уверен, что он короче и имеет три разных персонажа (я не хочу повторять мой подход к желе: P).
Эрик Outgolfer

1
@EriktheOutgolfer Хорошо, хотя! Но это так же, как ваш ответ, поэтому я оставлю это как есть
Луис Мендо

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

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

APL (Dyalog Unicode) , 5 4 байта

Полные программы.

Буровой раствор от J.Sallé:

1231

Печатает этот номер. Гораздо более интересное решение:

010E1

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

APL игнорирует ведущие нули, поэтому это просто масштабированный формат для 10 × 10¹ = 100.


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.

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


Просмотр программ Chef заставляет меня задуматься о том, что для этого нужно.
bigyihsuan

@bigyihsuan см. мои правки
user24343

Вы можете удалить все «и» и заставить программу работать .
A _

Я создал рабочую программу. (177 байт)
A _

4

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


print( ')(')

Функция печати добавляет новую строку по умолчанию, поэтому код начинается с новой строки. Последний символ кода - ")", поэтому он печатается первым. Чтобы количество символов было неравномерным, перед аргументом функции печати вставляется пробел. Пожалуйста, извините за непристойность кода.

Выходы: )(\n

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


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

Спасибо, до 13 байт! Поскольку этот вопрос конкретно относится к пробелам, но не к новым строкам, я предполагаю, что завершающие символы новой строки в качестве endпараметра по умолчанию для функции печати не учитываются.
Яак

Это печатает завершающий символ новой строки, но не учитывает его.
A _

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

1
Да, переводы строки считаются пробелами, как и табуляции и пробелы среди других
Джо Кинг,

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неоперативный (может быть любой непробельный символ), чтобы сделать длину нечетной. Он добавляется перед первой половиной программы, поэтому средний символ также является пробелом, поскольку средний символ стал бы новой строкой, если бы он был во второй половине программы. Все непробельные символы игнорируются в программах.



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

Brain-Flak , 11 байт

(((())))

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

объяснение

Нам нужно положить 3 вещи в стек. Самый быстрый способ сделать это - положить 3 1 (или нули) в стек. Теперь, поскольку (кодовая точка 1) ничего не делает в Brain-Flak, мы можем добавить их в программу в первом, среднем и последнем местах. Теперь это кажется немного обманчивым, так что вот еще два ответа, которые, на мой взгляд, менее обманчивы.

Печать брекетов, 31 байт

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

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

Этот ответ печатает фигурные скобки, так что напечатанные символы на самом деле имеют отношение к коду, у него есть один дополнительный символ, чтобы сделать длину нечетной, поэтому нам нужно вывести только 1 средний символ.

Содержит только фигурные скобки, 32 байта

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

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

Это программа только для фигурных скобок, и источник, и (следовательно) выходные данные полностью состоят из фигурных скобок (символ Brain-Flak на самом деле заботится).


3

AsciiDots - 9 байт

.---$'.$.

Выход: .$.

Код начинается с a ., заканчивается a ., а средний символ - a $. Одинарная кавычка в середине устанавливает режим точечной печати, чтобы просто читать символы прямо в выходной поток.

Вполне возможно, что это можно сделать меньше, но я начинаю сомневаться, что это возможно. Чтобы напечатать три символа, необходимо использовать одинарную кавычку, поскольку для вывода двойной кавычки потребуется конец строки. Однако это означает, что за одинарной кавычкой должны следовать а) три символа и б) не может быть центральным символом. Чтобы сократить это до семи байтов, я рассматривал попытку повторно использовать начало точки в качестве одного из печатных символов (что-то вроде программы quine AsciiDot). Однако я обнаружил, что самая короткая последовательность, доступная для печати, была($'который должен был бы напечатать четыре символа в пространстве трех или три символа в пространстве четырех. Я также попробовал несколько хакерских альтернативных методов, таких как попытка напечатать значение точки (равное 0) в качестве одного из символов. Хотя может быть какая-то система, которая работает, я обнаружил, что она довольно сложная и большая. Таким образом, я считаю, что вышеизложенное является наименьшим решением. (Я буду обновлять, если я найду что-то меньшее)


Добро пожаловать в Code Golf SE! Я возился с этим несколько минут и пришел к тому же выводу, что и вы. Хороший первый пост!
Хулдрасет на'Барья

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

3

MATLAB, 13 15 байт

disp(  ') d')

Выходы ) d

Предыдущая версия (15 байт, менее строгий вывод):

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

Выходы '''


Теперь я вижу, сейчас волнуюсь.
Пшеничный волшебник

Разве это не выводит конечный пробел?
Санчиз

@Sanchises Нет, размер (ans) == 3
18 октября - день молчания на SE

Да, но фактический результат есть ans =\n '''\n. Обычно это не проблема, но эта задача, похоже, устанавливает более строгие стандарты. Но тогда я могу неправильно истолковать проблему.
Санчиз

@ Сэнсис, хм, понятно. я мог бы неправильно понять, что Codegolf считает «выводом», тогда ваш вывод кажется буквально выводом, отформатированным MATLAB
18 октября - день молчания на SE
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.