Codegolf — Сделайте Прожектор С Алфавитом!

  • Автор темы Svv1973
  • Обновлено
  • 20, Oct 2024
  • #1

Вдохновлено ошибка в решении этот вызов, ваша задача — создать именно такой текст:

 
 
 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> 

Дополнительные правила:

  • Ваша программа может использовать любые разрешенные методы вывода.
  • Допускается одна завершающая новая строка и/или одна начальная новая строка.
  • Между строками, содержащими буквы, должна быть одна новая строка, не более.
  • Все буквы должны быть прописными.

Как и в случае с , побеждает самое короткое представление. Удачи!

Таблица лидеров:

YXWVUTSRQPONMLKJIHGFEDCBA ZYXWVUTSRQPONMLKJIHGFEDCBA ZYXWVUTSRQPONMLKJIHGFEDCBA YXWVUTSRQPONMLKJIHGFEDCBA XWVUTSRQPONMLKJIHGFEDCBA WVUTSRQPONMLKJIHGFEDCBA VUTSRQPONMLKJIHGFEDCBA UTSRQPONMLKJIHGFEDCBA TSRQPONMLKJIHGFEDCBA SRQPONMLKJIHGFEDCBA RQPONMLKJIHGFEDCBA QPONMLKJIHGFEDCBA PONMLKJIHGFEDCBA ONMLKJIHGFEDCBA NMLKJIHGFEDCBA MLKJIHGFEDCBA LKJIHGFEDCBA KJIHGFEDCBA JIHGFEDCBA IHGFEDCBA HGFEDCBA GFEDCBA FEDCBA EDCBA DCBA CBA BA A

#код-гольф #код-гольф #ascii-art #kolmogorov-complexity #alphabet

Svv1973


Рег
29 Sep, 2005

Тем
93

Постов
199

Баллов
704
  • 26, Oct 2024
  • #5

///, 105 97 байт

'A'

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

Объяснение

/// знает только одну команду, 'AA' replaces all occurrences of 'Z' в 'C' с 'B' . Кроме того 'A' can be used to escape characters.

Сокращенный код для простоты:

<?php

Первая команда php -r replaces for($c=A;$c!=AA;$q="$s$z $q",$s.=" ")$z=$c++.$z;echo$q; с prepend n spaces to string in the subsequent code. This gives:

- o = 0 G_ - reversed(alphabet) .< - suffixes(^) XF - for i in ^: o - o++ } - ^ * 2 h - ^ + 1 - - i.lpad(" ", ^) - for i in reversed(^): - print i

Затем G_.<XFo}h- replaces $_=$"x26 .join'',reverse A..Z,Z;say while s/ \S// с f=(a=65,b='',c)=>a>90?'':f(a+1,b+' ',c=String.fromCharCode(a)+[c])+` `+b+c :

$#

Затем @; replaces $#_ with [...] :

\(...)

Примечание: мне пришлось использовать A for replacement. Since BA также является частью замены, это приведет к созданию бесконечного цикла, если я только заменю A .

Затем командуйте Y replaces A с пробелами и Z deletes all say :

@@

Следующая команда reverse replaces @@ ничем. Поскольку нет $" in the code, it does nothing. This is just here to remove the two leadings say с начала кода. Это оставляет

@@

Затем команда A..Z removes @@ , так что это оставит код

\(...)

Похожий for removes $#@-=say$"x$#@,reverse@@for\(@@=A..Z) :

-M5.10.0

$\ :

"\n"

$/ :

for

И последняя команда неполная, поэтому она ничего не делает:

$_ ||answer||

Хаскелл, 53 52 байта

$a

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

Как это работает

$" ||answer||

Питон 2, 66 64

0

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

 

Jeine


Рег
24 Jan, 2010

Тем
72

Постов
195

Баллов
575
  • 26, Oct 2024
  • #7

мозготрах, 105 байт

A..Z

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

Минимизировано и отформатировано:

for

Читабельная версия:

print ||answer||

Поэтический, 601 байт

$\

Poetic — это эзоланг, который я создал в 2018 году для классного проекта, и это производная от Brainfuck, в которой длины слов соответствуют командам Brainfuck (а команды +, -, > и < имеют однозначные аргументы).

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

Если вы хотите попробовать это онлайн (что, в первую очередь, является половиной смысла классного проекта), посетите мой онлайн-переводчик!

 

Vormut


Рег
04 Apr, 2020

Тем
86

Постов
202

Баллов
652
  • 26, Oct 2024
  • #10

05AB1E, 10 байт

}{$\=$"x$-++.($a=$_.$a).$/.$\for A..Z

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

Пояснения:

-p ||answer||

Перл 6, 37 байт

Сэкономлено 9 байт благодаря @Massa.

printf %s {Z..A}|sed 'h s/./ /g G : s/ [^ ]//p t d'

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

Объяснение: s/^/printf %25s;printf %s {Z..A}/e : p s/ \S// t d is a range from 25 to 0 (as expected). We iterate over that range, saying (= printing with newline) that many spaces and the string of characters that have ASCII codes ( [print(' '*i+''.join([chr(64+i)for i in range(i+1,0,-1)]))for i in range(25,-1,-1)] ) от 65 + это число ( ;;(u!@W ).

 

Krasnikova_1978


Рег
30 Oct, 2019

Тем
77

Постов
214

Баллов
619
  • 26, Oct 2024
  • #11

Вим, 43 нажатия клавиш

|(;No

Вы можете увидеть это в действии на этой гифке, созданной с использованием Линн скрипт Python

 

Finney


Рег
29 Jul, 2004

Тем
72

Постов
182

Баллов
552
  • 26, Oct 2024
  • #14

Кубикс, 43 46 байт

$\s/:\/u;$

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

Кубический

;:'@^

Смотри, как он работает

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

  • u push 26 onto the stack as the base number
  • $ duplicate base as a counter, decrement, test for truthy
  • So;u on true skip the $ команду и разворот направо
    • u push 32, output as character, pop 32 and u-turn right onto the decrement
  • :(! on false jump the next '<sub> команда
  • $ / \ ; u : \ s / ' : ( ! $ u ; : ' @ ^ ! @ W u ; o S U ; o + < u ( ; ; o N ; ( ! | . . . . . . . . . . . pop, duplicate the base number, push 64 onto stack and redirect into a torturous route
  • $/\;u:\s/':(!$u;:'@^!@Wu;oSU;o+<u(;;oN;(!| this is the order of the steps on the top face. It boils down to swap the counter with the 64. Ends with a skip over the redirect that put it here.
  • 25.downto 0{|n|puts' '*n+[*?A..?Z][0..n].reverse*''} redirect to add, output character, pop, u-turn left
  • F²⁶«P⮌…α⊕ι↗ decrement, test for truthy. If true starts on a path which hits the u-turn and goes back to the redirect.
  • :h<_<CR>jjYZZPVgUxjpqqy$-i <Esc>lpl"aDYPD"ap+q25@q on false, reflect, redundant test, redundant decrement, pop, push 10 and output character
  • $_+65...65 pop down to the base number, decrement, u-turn right onto truthy test, halt if false otherwise change lane onto the duplicate at the beginning. Rinse and repeat.
 

MalukVP


Рег
15 Oct, 2015

Тем
63

Постов
200

Баллов
575
  • 26, Oct 2024
  • #17

Перл 5 + žpDvÐg<ú,¦ žp Push the uppercased alphabet, reversed D Duplicate v For each letter (we just want to loop 26 times, so we use the already pushed alphabet for that purpose) Ð Triplicate g< Length of the string - 1 ú Add that number of spaces at the beginning of the string , Print with newline ¦ Remove the 1st element of the remaining copy of the string , 37 bytes

žpDvÐg<ú,¦

Объяснение

С for k=25:-1:0,disp([blanks(k) 65+k:-1:65])end is being used with no input, the leading ØAµ⁶ṁḊ;ṚµƤṚY Main Link ØA "ABC...XYZ" Ƥ For each prefix, µ⁶ṁḊ;Ṛµ Monadic Link ⁶ ' ' ṁ (with automatic repetition) molded to the shape of Ḋ All but the first letter of the input (repeat - 1) ; With the input appended to it Ṛ reversed Y Join on newlines Ṛ Flip upside down это вырваться из неявного ØAµ⁶ṁḊ;ṚµƤṚY that's added. This builds the string, in reverse, into one night i camped a bit throughout all the forest now the sweet sights i saw giant things i saw little small things here i am seated around all my trees i saw i sleep i sle-e-p sleep in a cabin i am sleep-y i sleep a bit i awaken in bed i stand i walk i am ready i saw a vision of a dragon i am fooled i know i am should i f-ight i f-light i did f-light i did a flight go away,i do imply i*m afraid i run i leave i flee i am timid i*m just a person,not toughie-tough-guy no,never i*m waste i am stupid a quitter i was i am stupid i*m turning around i do not appreciate camping i cry i am crying no no который неявно выводится после любого содержимого, которое [ pre-initialize the tape with the values 10 90 32 >26< C_NEWLINE: 10 V_ALPHA: 90 C_SPACE: 32 V_COUNTER: 26 AS: 10 = 8 * 1 + 2 90 = 8 * 11 + 2 32 = 8 * 4 + 0 26 = 8 * 3 + 2 ] 8 ++++++++ [ * 1 >+ * 11 >+++++++++++ * 4 >++++ * 3 >+++ <<<<-] PLUS 2 >++ PLUS 2 >++ PLUS 0 > PLUS 2 >++ UNTIL V_COUNTER == 0 [ COPY V_COUNTER to RIGHT and RIGHT_RIGHT [->+>+<<] TAPE: 10 V_ALPHA 32 >0< V_COUNTER_R V_COUNTER_RR V_COUNTER_R SUB 1 TIMES: >-[- PRINT C_SPACE <<. >>] TAPE: 10 V_ALPHA 32 0 >0< V_COUNTER_RR V_COUNTER_RR TIMES: >[- PRINT V_ALPHA <<<<. DECREMENT V_ALPHA - INCREMENT V_COUNTER_R >>>+ >] TAPE: 10 V_ALPHA 32 0 V_COUNTER_R(26) >0< V_COUNTER_R SUB 1 TIMES: <-[- INCREMENT V_COUNTER <+ INCREMENT V_ALPHA <<+ >>>] PRINT C_NEWLINE <<<<. >>>] ed. ++++++++[>+>+++ ++++++++>++++>+ ++<<<<-]>++>++> >++[[->+>+<<]>- [-<<.>>]>[-<<<< .->>>+>]<-[-<+< <+>>>]<<<<.>>>] каждый символ в ++++++++[>+>+++++++++++>++++>+++<<<<-]>++>++>>++[[->+>+<<]>-[-<<.>>]>[-<<<<.->>>+>]<-[-<+<<+>>>]<<<<.>>>] , <pre id=o> установлено на f=(n=0,p='')=>n<26?f(++n,p+' ')+p+`ZYXWVUTSRQPONMLKJIHGFEDCBA `.slice(~n):'' o.innerText = f() (which starts as i=26 while i:i-=1;print' '*i+'ZYXWVUTSRQPONMLKJIHGFEDCBA'[25-i:] и увеличивается для следующего цикла) f['Z','Y'..'A'] -- call f with the full backwards alphabet f(a:b)= -- let `a` be the first char and `b` the rest. Return (b>>" ") ++ -- replace each char in b with a space, followed by a:b ++ -- the input string, followed by '\n' : -- a newline, followed by f b -- a recursive call of `f` with `b` f x=x -- stop on an empty input string s (which is the record separator and is initialised to space) to indent the string, concatenated with f(a:b)=(b>>" ")++a:b++'\n':f b f x=x f['Z','Y'..'A'] (которое предваряется EDCBA DCBA CBA BA A , the current letter from the EDCBA DCBA CBA BA A / цикл), за которым следует / B// (the line terminator, defaults to EDCBA DCBA CBA BA / B// BA / ) и существующее содержимое / C// .

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


Перл 5 + EDCBA DCBA CBA / C// CBA / B// CBA / , 37 bytes

<space>D

Объяснение

Этот подход выводит строку по порядку напрямую. / D// each char in the reference ( EDCBA DCBA / D// DCBA / C// DCBA / B// DCBA / ) к <space>E (which is set to / E// ), цикл запускается один раз для каждой буквы, EDCBA / E// EDCBA / D// EDCBA / C// EDCBA / B// EDCBA / 's final index is decremented by the result of outputting ( // , включает последнюю новую строку) # (space) 'the final index of # раз», за которым следует /#// of EDCBA / E// EDCBA / D// EDCBA / C// EDCBA / B// EDCBA / A . Используя возврат от * as the decrement means that the output happens before the final index is removed avoiding the need to add another entry to the list. So in the first iteration this outputs 25 spaces and /*// к _ , then 24 spaces and /_/ / к * ... then 1 space and * и 0 пробелов и \* .

Я чувствую, что здесь можно удалить некоторый синтаксис. Я поигрался со способом определения списка, который сжимается, но не останавливает цикл на полпути, и /_/ //*//__*E*D*C*B*A / E//__*E*D*C*B*A / D//__*E*D*C*B*A / C//__*E*D*C*B*A / B//__*E*D*C*B*A / A seems to do just that, whereas //__*E*D*C*B*A<newline>/ вместо этого рассматривается как одна запись списка. Также пытаюсь найти несловный символ, который работает с \* notation was trickier than I'd hoped, /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ / - мои обычные результаты при оценке /\\*/\/\/__\*E\*D\*C\*B\*A \/ //_/ //*\*E\*D\*C\*B\*A (which is removed).

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

 

BodoupsegeZed78


Рег
28 Feb, 2008

Тем
66

Постов
188

Баллов
528
  • 26, Oct 2024
  • #20

Пайк, 8 байт

/#/\\*E\\*D\\*C\\*B\\*A/

Попробуйте здесь!

/#/\\*E\\*D\\*C\\*B\\*A//\\*/\/\/__# \/ //_/ //*#

Я вижу, что правильный язык делает это в 6 байтах, если у них есть встроенная функция для \\* as well as what Pyke does

 

GooRK


Рег
22 Nov, 2004

Тем
95

Постов
243

Баллов
728
  • 26, Oct 2024
  • #21

PHP (63 58 55 байт)

Возможно, это моя любимая странная особенность PHP, часть, которую он унаследовал от Perl:

:

Это выводит завершающую новую строку, как это явно разрешено. Это можно запустить /:/\\\\*/ to save the opening /:/\\\\*//#/:E:D:C:B:A//\\*/\/\/__# \/ //_/ //*# нужно поместить это в файл.

Объяснение: когда переменная, содержащая строку \ is incremented in PHP, it becomes <substitution> а потом <text> and so on up until <pattern> становится /<pattern>/<substitution>/<text> . There is no digit before /:/\\\\*//#/:Z:Y:X:W:V:U:T:S:R:Q:P:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A//\\*/\/\/_____# \/ //_/ //*# для начала в этой сумасбродной алгебре, и оператор декремента не отменяет ее, поэтому мы сохраняем инкрементно перевернутый алфавит в printf %s {Z..A}|sed 'h s/./ /g G s/ \n// :x p s/ \S// tx d' (which defaults to 25..0|%{ } # Loop from 25 to 0 (65+$_)..65 # Construct a range of the specific ASCII codes [char[]]( ) # Cast that as a character array -join # that has been joined together into a string ' '*$_+ # Prepended with the correct amount of spaces который, когда он объединяется со строкой, ведет себя как пустая строка - то же самое происходит с 25..0|%{' '*$_+-join[char[]]((65+$_)..65)} and ¬ZA " Insert the alphabet backwards ò " Recursively: Y " Yank this current line >H " Add one space to every line G " Move to the last line in the buffer p " Paste the line we yanked x " Delete one character l " Move one character to the right, which will throw an error on " the last time through, breaking the loop ). Пробелы накапливаются в 00000000: ac5a 41f2 593e 4847 7078 6c .ZA.Y>HGpxl and the whole string is accumulated backwards in variable ¬ZAòY>HGpxl а это значит, что мы должны повторить это в конце.

Благодаря Тит за то, что вытащил мои фигурные скобки и сказал мне, что мне не нужно брать штраф за флаги встроенной оценки, такие как i=26 while i:i-=1;print' '*i+bytearray(range(65+i,64,-1)) .

 

Myvalik


Рег
09 Jul, 2010

Тем
71

Постов
166

Баллов
531
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно