Песни Битлз и Шестиугольники


30

Напишите две треугольные (то есть пирамидальные) программы.

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

 X
XXX

или

  X
 XXX
XXXXX

или

   X
  XXX
 XXXXX
XXXXXXX

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

Вторая программа должна иметь тот же размер и форму, что и первая, за исключением того, что треугольник будет направлен вниз.

Так что если ваша первая программа выглядит

  X
 XXX
XXXXX

тогда ваша вторая программа будет выглядеть

yyyyy
 yyy
  y

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

Ваша задача - написать эти программы так, чтобы каждая из них выводила (на стандартный вывод или ближайшую альтернативу) название отдельной песни Битлз , не принимая никакого ввода. Эта статья в Википедии послужит официальным списком песен для The Beatles. Вывод должен быть одним из названий в точности как указано, например I Want You (She's So Heavy).

Это довольно легко, однако, даже со странным требованием программы треугольника. Итак, мы собираемся сформировать еще одну программу из первых двух, которая должна выводить еще одно название песни.

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

Если бы ширина вашей первой программы была три, она бы выглядела так:

 XyyyX
XXXyXXX
yyyXyyy
 yXXXy

Если бы базовая ширина была пятью, это выглядело бы так:

  XyyyyyX
 XXXyyyXXX
XXXXXyXXXXX
yyyyyXyyyyy
 yyyXXXyyy
  yXXXXXy

Эта программа (при запуске с пробелами и символами новой строки, как и остальные) должна выводить название другой песни Beatles, как и первые две программы. Также:

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

Обратите внимание, что фактические программы не требуются. Функции не допускаются. Чтение собственного исходного кода в любой программе также не допускается.

пример

Если ваша первая программа была

  A
 AAA
AAAAA

это может вывести Across the Universe.

Тогда ваша вторая программа

bbbbb
 bbb
  b

мог бы вывести Revolution.

Затем объединить в программу шестиугольника

  AbbbbbA
 AAAbbbAAA
AAAAAbAAAAA
bbbbbAbbbbb
 bbbAAAbbb
  bAAAAAb

выход может быть Get Back.

счет

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


2
Конечно, тайбрейкер должен быть лучшим выбором из трех песен? ;)
Даг МакКлин

1
У меня возникают трудности при написании записи Python без простого копирования метода Sp3000 (никогда не думал, что буду жаловаться на синтаксический пробел!), Но я написал сценарий для сборки двух треугольников в шестиугольник. В случае, если это полезно для кого-то еще, здесь это в Гисте .
Тим Педерик

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

@TimPederick Так как я не мог заставить ваш шестиугольник-ifier работать, я написал скрипт на Python, чтобы сделать это, начиная с 2 многострочных строк. Смотрите здесь, если кто-то хочет использовать его.
mbomb007

@ mbomb007 Извините, но завершающий пробел не допускается, поскольку он не является частью заголовка. (Я бы позволил завершающий перевод новой строки, так как многие операторы печати добавляют его.) Я не уверен в обычной политике возврата, но со мной все в порядке.
Увлечения Кельвина

Ответы:


18

GolfScript, ширина = 9 символов, заголовки = 33 символа

шестиугольник

    "Let It Be"
   }";"Yeste"}";      
  "Twi""rda""Twi"
 "st an""y""st an"
"d Shout"}"d Shout"
Let It Be"Let It Be
 "Yeste"}";"Yeste"
  "rda""Twi""rda"
   "y""st an""y"
    }"d Shout"}

Принты Let It Be . (9 символов)

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

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

Маркер "Let It Be"в первой строке помещает строку Let It Be в стек.

Вторая строка начинается с }недокументированного «супер комментария», который немедленно прерывает выполнение.

Перед выходом GolfScript печатает содержимое стека.

X треугольник

    "
   }";
  "Twi"
 "st an"
"d Shout"

Отпечатки Твист и Крик . (15 символов)

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

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

Первые две строки выдвигают строку "\n }", которую команда ;отбрасывает из стека.

Остальные строки содержат маркеры "Twi", "st an"и "d Shout", которые толкают строку Twist и Shout на три части.

Перед выходом GolfScript печатает содержимое стека.

Y треугольник

Let It Be
 "Yeste"
  "rda"
   "y"
    }

Печать вчера . (9 символов)

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

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

Маркеры Let, Itи Beна первой линии не определены, так что они ничего не делают.

Три следующие строки содержат маркера "Yeste", "rda"и "y", которые толкают строку Вчера в трех частях.

}На последней строке ничего не делает; программа все равно закончилась бы.

Еще раз, GolfScript печатает содержимое стека перед выходом.


21

Befunge -93, ширина = 13 15 , названия = 31 24 символа

Отключение электроэнергии вчера вечером помешало мне обновить это, когда я понял это, но мне удалось уменьшить ширину треугольника и увеличить длину песни!

Указательная программа: «Копай пони», 10 знаков:

      v
     v> 
    v#  >
   "<     
  v <>"y"v>
 <v"Dig a P"
"^>:#,_@.>"no

объяснение

Я ДЕЙСТВИТЕЛЬНО воспользовался уловкой Бефунга и выбрал «Копать пони» именно потому, что на 6-й позиции было место. Это позволяет программе перемещаться по названию песни. Попробуйте это в онлайн-переводчике, чтобы увидеть, как это работает.

Указывающая программа: «Если я упал», 9 символов:

< v"f I Fell"
 v>"I">:#,_@
  "raC yM "
   v"Drive


       .

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

объяснение

Единственные соответствующие строки здесь - первые два. Я использовал трюк с циклическим изменением (указатель инструкции отправляется слева), чтобы сжать еще один символ. Вторая строка выводит название песни.

Комбинированные: «Drive My Car», 12 символов:

      v< v"f I Fell"v
     v> v>"I">:#,_@v> 
    v#  >"raC yM "v#  >
   "<     v"Drive"<     
  v <>"y"v>     v <>"y"v>
 <v"Dig a P"   <v"Dig a P"
"^>:#,_@.>"no "^>:#,_@.>"no
< v"f I Fell"v< v"f I Fell"
 v>"I">:#,_@v> v>"I">:#,_@
  "raC yM "v#  >"raC yM "
   v"Drive"<     v"Drive
         v <>"y"v>     
        <v"Dig a P"   
       "^>:#,_@.>"no 

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

       -----------------
      /v\< v"f I Fell"/v\
     /v> \v>"I">:#,_@/v> \
    /v#  >\"raC yM "/v#  >\
   /"<     \v"Drive/"<     \
  /v <>"y"v>\     /v <>"y"v>\
 /<v"Dig a P"\   /<v"Dig a P"\
/"^>:#,_@.>"no\ /"^>:#,_@.>"no\
-------------------------------
\< v"f I Fell"/v\< v"f I Fell"/
 \v>"I">:#,_@/v> \v>"I">:#,_@/
  \"raC yM "/v#  >\"raC yM "/
   \v"Drive/"<     \v"Drive/
    \     /v <>"y"v>\     /
     \   /<v"Dig a P"\   /
      \ /"^>:#,_@.>"no\ /
       -----------------

объяснение

Здесь вступают в игру третья и четвертая линии треугольника, направленного вниз. Есть несколько перенаправлений на краю обоих треугольников, которые служат для перемещения указателя инструкций по этим двум линиям и переноса «Drive My Car» в стек. Затем он распечатывается с использованием >:#,_@бита в треугольнике со стрелкой вверх. Кстати, используются как левый, так и правый треугольники, направленные вверх.

Там может быть способ использовать больше пустого пространства, но я думаю , что мое время лучше потратить на другие вопросы. :П


Хм. Правила PPCG таковы: если программа работает хотя бы в одном интерпретаторе, она действительна. Хорошее место, хотя.
El'endia Starman

Другое «правило» PPCG заключается в том, что интерпретатор определяет язык, а не спецификацию. Таким образом, мой код Befunge, по сути, действителен.
El'endia Starman

18

Python 2, ширина = 51

                         #print "Yellow Submarine" if id else "(Reprise)"   ##
                        #.##...............................................##.#
                       #...##.............................................##...#
                      #.....##...........................................##.....#
                     #.......##.........................................##.......#
                    #.........##.......................................##.........#
                   #...........##.....................................##...........#
                  #.............##...................................##.............#
                 #...............##.................................##...............#
                #.................##...............................##.................#
               #...................##.............................##...................#
              #.....................##...........................##.....................#
             #.......................##.........................##.......................#
            #.........................##.......................##.........................#
           #...........................##.....................##...........................#
          #.............................##...................##.............................#
         #...............................##.................##...............................#
        #.................................##...............##.................................#
       #...................................##.............##...................................#
      #.....................................##...........##.....................................#
     #.......................................##.........##.......................................#
    #.........................................##.......##.........................................#
   #...........................................##.....##...........................................#
  #.............................................##...##.............................................#
 #...............................................##.##...............................................#
print "Sgt. Pepper's Lonely Hearts Club Band",;id=0#print "Sgt. Pepper's Lonely Hearts Club Band",;id=0
print "Yellow Submarine" if id else "(Reprise)"   ##print "Yellow Submarine" if id else "(Reprise)"   #
 #...............................................##.##...............................................#
  #.............................................##...##.............................................#
   #...........................................##.....##...........................................#
    #.........................................##.......##.........................................#
     #.......................................##.........##.......................................#
      #.....................................##...........##.....................................#
       #...................................##.............##...................................#
        #.................................##...............##.................................#
         #...............................##.................##...............................#
          #.............................##...................##.............................#
           #...........................##.....................##...........................#
            #.........................##.......................##.........................#
             #.......................##.........................##.......................#
              #.....................##...........................##.....................#
               #...................##.............................##...................#
                #.................##...............................##.................#
                 #...............##.................................##...............#
                  #.............##...................................##.............#
                   #...........##.....................................##...........#
                    #.........##.......................................##.........#
                     #.......##.........................................##.......#
                      #.....##...........................................##.....#
                       #...##.............................................##...#
                        #.##...............................................##.#
                         #print "Sgt. Pepper's Lonely Hearts Club Band",;id=0#

Да, хорошо ... Питон.

Комментарии Python начинаются с #, поэтому большинство строк - просто комментарии. Для обращенного вверх треугольника единственное, что выполняется, это

print "Sgt. Pepper's Lonely Hearts Club Band",;id=0

который печатает Sgt. Pepper's Lonely Hearts Club Band.

Для обращенного вниз треугольника мы выполняем

print "Yellow Submarine" if id else "(Reprise)"

который печатает Yellow Submarine, так как функция idправдива.

Однако когда мы объединяем программы, все, что происходит, - это две вышеупомянутые строки в последовательности. Поскольку устанавливается конец первой строки id=0, который теперь ложный, конечным результатом является то, что мы добавляем конец (Reprise)до конца, получая в Sgt. Pepper's Lonely Hearts Club Band (Reprise)качестве результата (Кальвин сказал, что все в порядке ).


15
Это заставляет меня думать об Имперском марше больше, чем любая песня Битлз ...
Увлечения Кэлвина

6
Я могу услышать звуковой эффект TIE-fighter, просто увидев эту форму
Fatalize

@ Calvin'sHobbies Хахаха. Верно!
Луис Мендо

17

Снеговик 1.0.2 , ширина = 13

      }?}///////////}
     ///"Get Back"////
    ///////////////////
   /////////////////////
  "Sun King//"[["Sun King
 "*"BirthdaysP/"*"Birthday
"]]8AaLsP[[///"]]8AaLsP[[//
?}///////////}?}///////////
 "Get Back"////"Get Back"/
  ///////////////////////
   /////////////////////
    //"[["Sun King//"[[
     sP/"*"BirthdaysP/
      /"]]8AaLsP[[///

В заключение! Задача, в которой Снеговик может процветать! : D: D

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

Программа А (вывод:) Birthday:

      }
     ///
    /////
   ///////
  "Sun King
 "*"Birthday
"]]8AaLsP[[//

Это довольно просто. Первый символ ( }) устанавливает наши активные переменные, затем есть куча комментариев / никаких операций. Затем он сохраняет строку "Sun King\n "и сразу же отбрасывает ее (через *хранение в permavar, который мы никогда не используем). Тогда это хранит "Birthday\n".

]]здесь не используется, так [[ foo ]]как это блочный комментарий в Snowman, но поскольку [[до этого нет соответствия ]](в самой программе A), он просто ничего не делает. Затем 8AaLзахватывает первые 8 символов строки, sPпечатает ее и [[комментирует остальную часть программы (потому что, опять же, соответствия нет ]].

Программа B (вывод:) Get Back:

?}///////////
 "Get Back"/
  /////////
   ///////
    //"[[
     sP/
      /

Это тоже довольно просто. ?}эквивалентно }( ?просто устанавливает все переменные на неактивные, что здесь не работает, но опять же важно позже). Затем он сохраняет строку "Get Back", выполняет кучу операций, которые не выполняются ( //до конца строки всегда комментарий), и печатает через sP.

Полная программа

Выход, как вы уже догадались, Sun King1 .

Давайте посмотрим на эту строку построчно:

  • Линия 1

          }?}///////////}
    

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

  • Линии 2-4

         ///"Get Back"////
        ///////////////////
       /////////////////////
    

    Комментарии...

  • Строка 5

      "Sun King//"[["Sun King
    

    Здесь мы сохраняем строку "Sun King//", а затем запускаем комментарий блока. Это по сути пропускает все до следующего ]].

  • Строка 6

     "*"BirthdaysP/"*"Birthday
    

    Все еще внутри комментария блока ...

  • Линия 7

    "]]8AaLsP[[///"]]8AaLsP[[//
    

    Здесь мы вырываемся из комментария блока на короткий промежуток времени, чтобы выполнить код 8AaLsP. Это фактически используется в программе A. Поскольку я выбрал все песни длиной 8 букв, я могу просто использовать один и тот же код для объединенной программы.

    Тогда это становится немного сложнее. В следующий раз, когда мы выйдем из комментария блока, мы увидим 8AaLsPснова. На этот раз, однако, все переменные не определены (мы назвали sp, print, в режиме потребления, который избавляется от переменных). Поскольку aalтребуется два аргумента, и на этот раз он имеет только один ( 8), он ошибается и оставляет переменные без изменений.

    Точно так же spвстречает 8, понимает, что это неправильный тип для печати, и оставляет переменные как есть.

  • Строки 8-13

    ?}///////////}?}///////////
     "Get Back"////"Get Back"/
      ///////////////////////
       /////////////////////
        //"[["Sun King//"[[
         sP/"*"BirthdaysP/
    

    Все еще застрял в этом блоке комментариев ...

  • Линия 14

          /"]]8AaLsP[[///
    

    Наконец, мы пытаемся вызвать ту же самую последовательность print-first-8-chars еще раз, и она снова терпит неудачу, вызывая еще две ошибки. (Это 8означает, что переменные сейчас 8 8, что является правильным числом переменных на aalданный момент, но все еще не правильными типами.)


1: а также четыре ошибки времени выполнения SnowmanExceptionдля STDERR, но для мета это не имеет значения .


The slashes are mostly for aesthetic purposes, and the majority of them can be replaced with spaces (but that would make it look a whole lot more boring)Но это немного усложняет понимание того, что происходит ...
curiousdannii

14

> <> , ширина = 11

     /"yadhtri"\ /
           v"B"/   
        ?!;>ol      
  duJ yeH" /"eduJ yeH
 o   >l?!;   o   >l?!;
staC"/"klaw staC"/"klaw
"yadhtri"\ /"yadhtri"\ 
     v"B"/       v"B"/
  ?!;>ol      ?!;>ol 
   " /"eduJ yeH" /"e
       o   >l?!;   
      staC"/"klaw 

2D-языки неплохо проводят время с этим испытанием.

Стрелка вверх

     /


  duJ yeH
 o   >l?!;
staC"/"klaw

Ход программы начинается сверху слева, двигаясь вправо. /Отражает, и так> <> является тороидальный мы вновь со дна. Затем мы /нажимаем другое и снова размышляем, и помещаем символы klawstaCодин за другим в стек в ""режиме строки . Наконец, мы отражаем вверх и попадаем в >l?!;oцикл, который является идиоматическим способом печати всего стека в> <>.

Это печатает Catswalk.

Стрелка вниз

"yadhtri"\ 
     v"B"/
  ?!;>ol 
   " /"e

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

комбинированный

     /

  ?!;>ol      ?!;>ol 
     /"eduJ yeH" / 

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

Это печатает Hey Jude.


5

Python 2, размер 21

Эта программа требует ANSI-совместимого терминала ( точнее, DOS ANSI.SYS ), так как я использую, \x1b[2Jчтобы очистить консоль И переместить курсор в верхний левый угол. Чтобы сделать это совместимым с другими терминалами ANSI, распечатайте \x1b[1J\x1b[H(он по-прежнему может соответствовать размеру шестиугольника 21). Я не смог протестировать эту часть, потому что у меня нет терминала, который печатает управляющие коды ANSI.

Я думаю, что программа выглядит довольно круто, похожа на радиоактивный символ (хотя затенение ASCII подразумевает цвета назад) или значок снайперского оружия из Metroid Prime: Hunters.

Он сделал посадку в размере 17, но я забыл id=0в стрелку вверх. Я не думаю, что смогу уменьшить его, так как все должно быть в одной строке ...

Кроме того, кредит идет на Sp3000 за идею использовать id.

          #exec('print"'       ##
         ###'\x1b[2J"+(id '   ####
        #####'and"Hey Ju'    ######
       #######'de"or"Ca'    ########
      #########'tswalk'    ##########
     ###########'")')     ############
    ##############       ##############
   ################     ################
  ##################   ##################
 #################### ####################
id=0;print"Birthday"##id=0;print"Birthday"#
exec('print"'       ##exec('print"'       #
 '\x1b[2J"+(id '   ####'\x1b[2J"+(id '   #
  'and"Hey Ju'    ######'and"Hey Ju'    #
   'de"or"Ca'    ########'de"or"Ca'    #
    'tswalk'    ##########'tswalk'    #
     '")')     ############'")')     #
      #       ###############       #
       #     #################     #
        #   ###################   #
         # ##################### #
          #id=0;print"Birthday"##

Стрелка вверх:

          #
         ###
        #####
       #######
      #########
     ###########
    #############
   ###############
  #################
 ###################
id=0;print"Birthday",

Стрелка вниз:

exec('print"'       #
 '\x1b[2J"+(id '   #
  'and"Hey Ju'    #
   'de"or"Ca'    #
    'tswalk'    #
     '")')     #
      #       #
       #     #
        #   #
         # #
          #

"Эй, Джуд" - одна из моих любимых песен "Битлз", но я действительно не знаю так много. Я никогда не слышал две другие песни, которые я использую. Это не тот жанр, который я часто слушаю.


1
1. \x1b[2Jработает только с ANSI.SYS; он не должен ничего делать в других терминалах. Кроме того, \x1b[;Hожидает целое число после точки с запятой. Чтобы сделать для строки и столбца значение по умолчанию 1, используйте \x1b[H. 2. \x1b[1J\x1b[Hи \x1b[H\x1b[Jдолжен работать на всех терминалах ANSI. 3. На терминалах Linux вы можете просто использовать \x1bcдля сброса терминала. 4. \x1bможет быть заменен буквальным байтом ESC, если это поможет улучшить ваш счет.
Деннис

@Dennis Спасибо за разъяснение этого. Я все еще не смогу улучшить свой счет, так как не могу найти способ разбить код стрелки вверх на несколько строк.
mbomb007 19.09.15

2

C (gcc) , базовая ширина = 17

Верх "Эй, Джуд"

        s
       ;//
      s;///
     main(//
    ){puts(//
   #define T//
  s?"Michell"//
 "e":"Hey Jud"//
"e");}///////////

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

Снизу, "Спичечная коробка"

s=1;/////////////
 #ifndef T//////
  main(){puts//
   ("Matchb"//
    "ox");}//
     # endif
      /////
       //\
        ;

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

Шестигранник "Мишель"

        ss=1;/////////////s
       ;//#ifndef T//////;//
      s;///main(){puts//s;///
     main(//("Matchb"//main(//
    ){puts(//"ox");}//){puts(//
   #define T//# endif#define T//
  s?"Michell"///////s?"Michell"//
 "e":"Hey Jud"////\"e":"Hey Jud"//
"e");}///////////;"e");}///////////
s=1;/////////////ss=1;/////////////
 #ifndef T//////;//#ifndef T//////
  main(){puts//s;///main(){puts//
   ("Matchb"//main(//("Matchb"//
    "ox");}//){puts(//"ox");}//
     # endif#define T//# endif
      /////s?"Michell"///////
       //\"e":"Hey Jud"////\
        ;"e");}///////////;

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


1

пупок, длина основания 15

Только что узнал, что это не работает с mawk : /

Это не слишком сложно, но когда я вырос в 70-х годах, когда «Битлз» все еще были вездесущими в эфире, мне пришлось ответить на это. Сначала я думал, что awk не подходит, но потом он пришел ко мне.

Поскольку эти сценарии содержат BEGIN- и / или END-блоки, им нужно сказать, что не будет входных данных для выполнения END-блока. Этого можно достичь, нажав Ctrl-D после их запуска, или запустив их так:

awk -f script.awk </dev/null

который я считаю более удобным. echo | awk -f script.awkтакже будет работать, но если бы я использовал пустую строку в качестве ввода, я бы сделал это совершенно по-другому.

Указывая вверх, печатает For No One (ссылка на YouTube)

       #
      # #
     #   #
    BEGIN {
   print n?#
  #         #
 n"So Tired":#
n="For No One"}

Основной код без комментариев это. Поскольку nон не определен, он печатает «For No One», если вызывается сам по себе.

    BEGIN {
   print n?

 n"So Tired":
n="For No One"}

Указывая вниз, печатает черный дрозд

END{a="Blackb"#
 a=n?_:a"ird"#
  printf a  #
   n="I'm "#
    if(a) #
     print
      } #
       #

Основной код - это Если nбыл определен ранее, он ничего не печатает. Я ввел хороший вывод с новой строкой после каждого названия дорожки, потому что у меня была возможность сделать это, и в консоли это выглядит лучше. nопределяется в процессе; это нужно для шестиугольника.

END{a="Blackb"
 a=n?_:a"ird"
  printf a
   n="I'm "
    if(a)
     print
      }

Шестиугольник, принты я так устал

       #END{a="Blackb"##
      # #a=n?_:a"ird"## #
     #   #printf a  ##   #
    BEGIN {n="I'm "#BEGIN {
   print n?#if(a) #print n?#
  #         #print#         #
 n"So Tired":#} #n"So Tired":#
n="For No One"}#n="For No One"}
END{a="Blackb"##END{a="Blackb"#
 a=n?_:a"ird"## #a=n?_:a"ird"#
  printf a  ##   #printf a  #
   n="I'm "#BEGIN {n="I'm "#
    if(a) #print n?#if(a) #
     print#         #print
      } #n"So Tired":#} #
       #n="For No One"}#

Основной код. Теперь, наконец, таинственное nиспользуется. Поскольку nопределяется в первой строке, направленный вверх треугольник печатает альтернативный вывод, а направленный вниз треугольник печатает пустоту.

    BEGIN {n="I'm "
   print n?

 n"So Tired":
n="For No One"}
END{a="Blackb"
 a=n?_:a"ird"
  printf a  
   n="I'm "
    if(a) 
     print
      } 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.