Это не мой X, его Y слишком Z


17

Эта задача вдохновлена ​​серией книг для маленьких детей Фионы Уотт и Рэйчел Уэллс, которыми я недавно наслаждаюсь со своей дочерью.

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

В шестой раз спрашивая, мышь находит свою вещь и радуется, потому что у нее есть ожидаемое свойство.

Вот текст типичного примера:

That's not my bunny, its tail is too fluffy.
That's not my bunny, its paws are too rough.
That's not my bunny, its tail is too woolly.
That's not my bunny, its eyes are too shiny.
That's not my bunny, its nose is too wrinkled.
That's my bunny! Its ears are so soft.

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

Начнем с трех сборников слов:

things = ["dinosaur", "lamb", "princess", "reindeer", "train"]
parts = ["back", "bells", "body", "bows", "crown", "dress", "ears",
  "engine", "fan", "flippers", "funnel", "hooves", "horns", "neck",
  "nose", "roof", "sash", "side", "spines", "spots", "tail", "teeth",
  "tiara", "wheels", "windows"]
properties = ["bumpy", "fluffy", "furry", "fuzzy", "glittery", "glossy",
  "hairy", "red", "rough", "rusty", "shiny", "silky", "slippery", 
  "soft", "sparkly", "squashy", "thick", "velvety", "woolly"]
  • Сначала мы решаем, что именно мы будем описывать.
  • Затем 5 раз мы сгенерируем строку "Это не моя [вещь], ее [часть] слишком [свойство].
  • Наконец, мы генерируем строку «Это моя [вещь]! Ее [часть] так [свойство]!

Соревнование

  • Создайте текст истории "Это не мое ...".
  • Он не должен последовательно воспроизводить один и тот же текст.
  • Это код гольф, поэтому попытайтесь сделать это наименьшим количеством байтов.
  • Используйте любой язык, какой пожелаете.
  • Пробел не имеет значения, но между строк должен быть символ перевода строки.
  • Списки исходных слов не являются частью вашего ответа (в TIO их можно добавить в заголовок).
  • Вы можете переименовать списки исходных слов.
  • Вывод может быть выведен на терминал или текст, сгенерированный в объект.
  • Пожалуйста, включите ссылку на онлайн-переводчика.
  • Проигнорируйте множественное число, "его рога" в порядке.
  • Это не должно иметь смысла. Если воронка вашей принцессы слишком пушистая, просто скажите так.

Образец вывода:

That's not my train, its engine is too rusty.
That's not my train, its hooves is too thick.
That's not my train, its sash is too fuzzy.
That's not my train, its tail is too velvety.
That's not my train, its horns is too glittery.
That's my train! Its hooves is so hairy.

Удачного игры в гольф!


2
@ Shaggy Первый пример - фактический текст одной из книг. Это не правильный ответ на этот вызов. Я сказал игнорировать множественное число, чтобы немного упростить задачу. Этот пример в основном справочная информация.
AJFaraday


10
Вы заявляете: «Это не должно иметь смысла». Это распространяется на почти сжатие? (то есть "Это не мой кролик, его глаза слишком блестящие. ... Это мой кролик! Его глаза такие блестящие." Приемлемо в качестве возможного выхода?)
Джонатан Аллан

13
Разве «не должен последовательно воспроизводить один и тот же текст», а колмогоровская сложность вроде несовместима?
Джозеф Сибл-Восстановить Монику

2
@ChrisH Это моя таксономическая ошибка. Хотя оба они классифицируются как Glires, так что это то, что я узнал сегодня.
AJFaraday

Ответы:


1

05AB1E , 63 байта

ΩU6F€Ω`XN5Qi“€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“ë“€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“}.ª,

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

68 байт версия, которая не выводит дублированных частей или свойств:

ΩUε.r6£}øεXª`N5Qi“€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“ë“€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“}.ª,

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

Обе программы предполагают, что список вещей является первым входом, а список, содержащий список частей и список свойств, является вторым входом.

Объяснение:

Ω            # Pop and push a random element of the things-list
 U           # Pop and store it in variable `X`
  6F         # Loop 6 times:
    €Ω       #  Get a random element from both the parts and properties list
      `      #  Push them to the stack
       X     #  And also push variable `X`
             #  (the order on the stack is now: property, part, thing)
    N5Qi     #  If it's the last iteration:
        “€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“ 
            '#   Push dictionary string "that's my ÿ! its ÿ is so ÿ."
       ë     #  Else:
        “€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“
            '#   Push dictionary string "that's not my ÿ, its ÿ is too ÿ."
             #  (where the `ÿ` are automatically replaced with the words on the stack)
       }.ª   #  After the if-else: sentence-capitalize the strings
             #  (so the "That's " as well as the "! Its")
          ,  #  And output it with trailing newline


ΩU           # Pop and store a random thing in variable `X`
  ε          # Map the list of lists of parts/properties to:
   .r        #  Shuffle the list
     6£      #  And leave the first six elements
           # After the map: zip/transpose to create pairs of part & property
    ε        # Foreach over the pairs:
     `XN5Qi“€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“ë“€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“}.ª,
             #  And the rest of the code is the same as above

Посмотрите эту подсказку 05AB1E (раздел Как пользоваться словарем? ), Чтобы понять, почему “€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“есть "that's my ÿ! its ÿ is so ÿ."и “€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“есть "that's not my ÿ, its ÿ is too ÿ.".


10

Python 3 , 149 байт

lambda a,*l:shuffle(a)or["That's "+s%(a[0],*map(choice,l))for s in["not my %s, its %s is too %s."]*5+["my %s! Its %s is so %s."]]
from random import*

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

-9 байт благодаря movatica


Хорошо сделано! Укороченный синтаксис кортежа: 149 байт
movatica

1
@movatica О, хорошо. Благодарность!
HyperNeutrino

«Это не мой олень, уши у него слишком ухабистые». - нужно что-то переключаться между / есть.
Джон Хант

1
@JohnHunt правила говорят, чтобы игнорировать множественное число.
HyperNeutrino

Моя ошибка. Это v. Впечатляет
Джон Хант

8

Древесный уголь , 72 байта

≔‽θθF⁵«That's not my θ, its ‽η is too ‽ζ.⸿»That's my θ! Its ‽η is so ‽ζ.

Попробуйте онлайн! Ссылка на подробную версию кода. Ожидает, что массивы вещей, частей и свойств будут находиться в переменных θ, ηи ζ, что легче всего организовать, предоставляя их во входных данных, а не в заголовке. Объяснение:

≔‽θθ

Выберите случайную вещь.

F⁵«That's not my θ, its ‽η is too ‽ζ.⸿»

Напечатайте пять отрицательных предложений.

That's my θ! Its ‽η is so ‽ζ.

Напечатайте положительное предложение.


6

Japt v2.0a0-R , 73 байта

ö
6Æ`Tt's {`not `pT=Y<5}my {+`!,`gT} {73dT*H}ts {Vö}  {`tÑ?`ë2!T} {Wö}.

Принимает три списка как U , VиW . В любом случае это входные переменные по умолчанию, поэтому просто поместите три списка в разделе ввода.

Попытайся

ö                         Saves the random object in variable U
6Æ                        Range [0..6), and map each to the following string
`That's                   The string "That's " plus
{`not `pT=Y<5}            "not " if the index is less than 5 (and store that in variable T), else ""
my                        Literal "my " plus
{+`!,`gT}                 U plus ',' if T, else '!'
{73dT*H}ts                "its " if T, else "Its "
{Vö}                      Random item from V
is                         
{`tsooo`ë2!T}             "too" if T, else "so"
{Wö}.                     Random item from V, plus a period

Очень хороший трюк с "слишком / так" :)
Shaggy

6

PowerShell , 147 байт

Эта основная программа не будет повторять какую-либо часть или свойство в прогоне и имеет разумную рандомизацию.

$t=$l|Random
$a=$a|Random -c 6
$r=$r|Random -c 6
0..4|%{"That's not my $t, its $($a[$_]) is too "+$r[$_]}
"That's my $t! Its $($a[5]) is so "+$r[5]

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

Написание get-randomтак много раз стоит так много символов! Тем не менее, если вы не хотите, чтобы детали и свойства повторялись, я не вижу возможности сократить это в PowerShell. Если вы не переместите первые 3 линейных канала в конец 3 строк назначения в заголовке. Иметь что-то вроде

# Header
$l = ("dinosaur", "lamb", "princess", "reindeer", "train")|Get-Random
$a = ("back", "bells", "body", "bows", "crown", "dress", "ears",
  "engine", "fan", "flippers", "funnel", "hooves", "horns", "neck",
  "nose", "roof", "sash", "side", "spines", "spots", "tail", "teeth",
  "tiara", "wheels", "windows")|sort{Get-Random}
$r = ("bumpy", "fluffy", "furry", "fuzzy", "glittery", "glossy",
  "hairy", "red", "rough", "rusty", "shiny", "silky", "slippery", 
  "soft", "sparkly", "squashy", "thick", "velvety", "woolly")|sort{Get-Random}

# Main
(1..5)|%{echo("That's not my $t, its "+$a[$_]+" is too "+$r[$_])}
"That's my $t! Its "+$a[6]+" is so "+$r[6]

Но это похоже на то, что он обманывает, и все еще не побеждает ответ Нейла.

Редактировать: Спасибо за советы Мэтта, и спасибо AdmBorkBork за их уточнение, удаление 3 наборов get-текста сократило его до 159 байт, затем еще немного гольфа от Adm уменьшило его до 147. Код, который я думал, позволял дублировать и Противоречивые высказывания составили 144 символа после применения одинаковых советов по гольфу.

function n{(random 18)+1}
$t=$l[(n)%5]
0..4|%{"That's not my $t, its $($a[(n)]) is too "+$r[(n)]}
"That's my $t! Its $($a[$(n)]) is so "+$r[(n)]

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

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


1
Добро пожаловать в PPCG! Части и свойства могут быть повторены, чтобы сэкономить несколько байтов.
Мохнатый

2
Вы можете отказаться Get-от Get-Random. Это глагол по умолчанию проверяется при оценке команд.
Мэтт

2
Добро пожаловать! Некоторые легкие
AdmBorkBork


2

JavaScript, 129

(a,b,c)=>(z='',a.forEach((f,i)=>z+=`That's ${q=i!=5?"not ":""}my ${f}${q?", i":"! I"}ts ${b[i]} is ${q?"to":"s"}o ${c[i]}.\n`),z)

input - три массива, возвращает строку



2

C # , 204 203 байта

()=>{int a(int x)=>new Random().Next(x);var j=t[a(5)];string s()=>$"That's not my {j}, its {p[a(25)]} is too {o[a(19)]}.\n";return s()+s()+s()+s()+s()+$"That's my {j}! Its {p[a(25)]} is so {o[a(19)]}.";};

Это мой первый ответ на этом сайте, поэтому я надеюсь, что он работает хорошо. Также нужны эти три вещи, но в зависимости от вопроса они не учитываются:

   var t = new[] { "dinosaur", "lamb", "princess", "reindeer", "train" };
   var p = new[] {"back", "bells", "body", "bows", "crown", "dress", "ears",
          "engine", "fan", "flippers", "funnel", "hooves", "horns", "neck",
          "nose", "roof", "sash", "side", "spines", "spots", "tail", "teeth",
          "tiara", "wheels", "windows" };
   var o = new[] {"bumpy", "fluffy", "furry", "fuzzy", "glittery", "glossy",
          "hairy", "red", "rough", "rusty", "shiny", "silky", "slippery",
          "soft", "sparkly", "squashy", "thick", "velvety", "woolly"};

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

Еще один байт благодаря Сок.


1
Добро пожаловать в PPCG! Я взял на себя смелость отредактировать ссылку на TIO в вашем ответе, чтобы другие могли легко попробовать ваш код для себя - я бы дал вам ссылку на него в этом комментарии, но URI, к сожалению, был слишком длинным! Я надеюсь, вам понравится ваше пребывание: о)
Сок

1
Один маленький гольф для вас - \rне требуется, который сэкономит вам 2 байта.
Сок

1

APL (Dyalog Unicode) , 117 байтов SBCS

↑('That''s not my ',(tT⊃⍨?5),', its ')∘,¨P[5?25],¨' is too '∘,¨V[5?19]
'That''s my ',t,'! Its',P[?25],'is so',V[?19]

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

?N генерирует случайный индекс среди первых N индексов.

M?N генерирует M случайных индексов (без замены) среди первых N индексов.

, это конкатенация

t←T⊃⍨... выбирает случайную вещь и называет ее t для повторного использования в последней строке.

∘,¨ объединяет строку слева с каждой строкой справа.

объединяет каждую строку слева с каждой строкой справа.

 изменяет список строк в символьную матрицу, чтобы он печатался правильно.


1

Pyth , 88 78 76 байтов

JONj_ms.ic"That's
 my 

ts 
 is 
o 
."b[?d" not"kJ?d", i""! I"OG?d\s"to"OH)6

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

Код, представленный выше, требует следующего заголовка:

=N["dinosaur""lamb""princess""reindeer""train")=G["back""bells""body""bows""crown""dress""ears""engine""fan""flippers""funnel""hooves""horns""neck""nose""roof""sash""side""spines""spots""tail""teeth""tiara""wheels""windows")=H["bumpy""fluffy""furry""fuzzy""glittery""glossy""hairy""red""rough""rusty""shiny""silky""slippery""soft""sparkly""squashy""thick""velvety""woolly")

Есть небольшая проблема с использованием функции «Заголовок» в TIO с Pyth, так как похоже, что TIO объединяет блоки кода на новых строках, а новые строки играют важную роль в Pyth. Вот ссылка на тот же код с использованием блока «Заголовок» с ненужной строкой в ​​выводе.

JONj_ms.ic"That's¶ my ¶¶ts ¶ is ¶o ¶."b[?d" not"kJ?d", i""! I"OG?d"to"\sOH)6   Newlines replaced with ¶
                                                                               Implicit: k="", b=newline
                                                                               From header: N=things, G=parts, H=properties
JON                                                                            Choose a random element from N, store in J
     m                                                                     6   Map [0-6), as d, using:
                                        ?d" not"k                                If d is truthy (i.e. not 0), yield " not", else ""
                                                 J                               J (the chosen thing)
                                                  ?d", i""! I"                   ", i" if d else "! I"
                                                              OG                 Random element from G
                                                                ?d"to"\s         "to" if d else "s"
                                                                        OH       Random element from H
                                       [                                  )      Wrap the previous 6 results in an array
         c"That's¶ my ¶¶ts ¶ is ¶o ¶."b                                          Split the template string on newlines
       .i                                                                        Interleave the template string elements with the previous list
      s                                                                          Concatenate
    _                                                                          Reverse lines
   j                                                                           Join on newlines, implicit print

Изменить: Переписать в гольф 10 байтов, предыдущая версия: J+" my "ONV5%"That's not%s, its %s is too %s."[JOGOH;%"That's%s! Its %s is so %s."[JOGOH


1

Perl 5,10, 127 байт

Беги с perl -M5.010 -f filename.pl.

my @t = qw(dinosaur lamb princess reindeer train);
my @r = qw(back bells body bows crown dress ears engine fan flippers funnel
           hooves horns neck nose roof sash side spines spots tail teeth tiara
           wheels windows);
my @p = qw(bumpy fluffy furry fuzzy glittery glossy hairy red rough rusty shiny
           silky slippery soft sparkly squashy thick velvety woolly);

sub r{rand@_}$a=" my $t[r@t]";say"That's not$a, its $r[r@r] is too $p[r@p]."for(1..5);say"That's$a! Its $r[r@r] is so $p[r@p]."

1

JavaScript ES6, 149 (+15?) Байтов

a = ["dinosaur", "lamb", "princess", "reindeer", "train"]
b = ["back", "bells", "body", "bows", "crown", "dress", "ears",
  "engine", "fan", "flippers", "funnel", "hooves", "horns", "neck",
  "nose", "roof", "sash", "side", "spines", "spots", "tail", "teeth",
  "tiara", "wheels", "windows"]
c = ["bumpy", "fluffy", "furry", "fuzzy", "glittery", "glossy",
  "hairy", "red", "rough", "rusty", "shiny", "silky", "slippery", 
  "soft", "sparkly", "squashy", "thick", "velvety", "woolly"]

// r=x=>x[parseInt(Math.random()*x.length)] 164 for better random on fast pc

r=x=>x[new Date%x.length]
s=r(a)
g=j=>console.log(`That's ${j?`not my ${s}, its ${r(b)} is to`:`my ${s}! Its ${r(b)} is s`}o ${r(c)}.`)
a.map(g) 
g()


Добро пожаловать в Code Golf! Хорошая работа!
AJFaraday

1
Спасибо, AJ!
Ценю

1

Пакетный файл, 434 424 + 7 байт

Выполнено через cmd/q/c.

Код не учитывается

set a=dinosaur lamb princess reindeer train
set b=back bells body bows crown dress ears engine fan flippers funnel hoobes horns neck nose roof sash side spines spots tail teeth tiara wheels windows
set c=bumpy fluffy furry fizzy glittery glossy hair red rough rusty shiny silky slippery soft sparkly squashy thick velvety woolly

Код считается

set q=random
set m=set/ar=1+%%%q%%%%%%%
call %m%5
for /f "tokens=%r%" %%x in ("%a%")do set x=%%x
:a
set/ad+=1
call %m%25
for /f "tokens=%r%" %%y in ("%b%")do set y=%%y
call %m%19
for /f "tokens=%r%" %%z in ("%c%")do echo That's not my %x%, its %y% is too %%z.
if %d% neq 5 goto a
call %m%25
for /f "tokens=%r%" %%y in ("%b%")do set y=%%y
call %m%19
for /f "tokens=%r%" %%z in ("%c%")do echo That's my %x%! Its %y% is so %%z.

Я рассмотрю некоторые проблемы, с которыми вам придется столкнуться, и объясню / оправдаю то, что я сделал, чтобы другие могли улучшить.

Выберите случайный элемент из массива, который
я сделал, сгенерировав случайное число между 1и nгде nколичество элементов в этом массиве. Затем я использовал это случайное число в качестве токена для захвата в каждом forцикле ( tokens=%r%). Поскольку я сделал это таким образом, я больше не мог вкладывать эти forциклы, так как tokens=!r!у меня не работало (с отложенным расширением). Это позволило бы сэкономить немало байтов, поскольку избавило бы от необходимости сохранять токены как переменные (set x=%%x ).

Генерация случайных чисел
m случайных чисел - это мой макрос генерации случайных чисел. Делая это таким образом, вы экономите 32 байта по сравнению с set/ar=%random%%%n+1каждой строкой. Вы можете полу-обмануть и решить, что токены yи zдолжны быть одним и тем же элементом:

call %m%19
for /f "tokens=%r%" %%y in ("%b%")do set y=%%y
for /f "tokens=%r%" %%z in ("%c%")do echo That's not my %x%, its %y% is too %%z.

Это, хотя и сохраняет некоторую случайность, исключает последние 6 элементов c . Это позволит сэкономить минимум 20 байтов, но я не думаю, что это соответствует требованиям ОП.

Теоретические улучшения
Я потратил довольно много времени, пытаясь заставить этот «псевдокод» работать, сохраняя при этом байты:

set 1-5=echo That's not my %x%, its %y% is too %%z.
set 6=echo That's my %x%! Its %y% is so %%z.
...
set/ad+=1
for /f "tokens=%r%" %%z in ("%c%")do call %%d%%

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


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

1
@JoKing Из испытания:The lists of source words are not part of your answer (in TIO they can be added to the header).
AdmBorkBork

Я не уверен, разрешено ли это или нет, так как я видел, что в других ответах это было сделано в обоих направлениях, но для тех из вас, кому интересно, это добавило бы к моему ответу 29 байтов в форме set a=%~1и т. Д.
BDM

1

чернила , 119 байт

~a=LIST_RANDOM(a)
-(l)That's{l<6: not} my {a}{l<6:, i|! I}ts {LIST_RANDOM(b)} is {l<6:to|s}o {LIST_RANDOM(c)}
{l<6:->l}

Со списками, определенными как

LIST a=(dinosaur),(lamb),(princess),(reindeer),(train)
LIST b=(back),(bells),(body),(bows),(crown),(dress),(ears),(engine),(fan),(flippers),(funnel),(hooves),(horns),(neck),(nose),(roof),(sash),(side),(spines),(spots),(tail),(teeth),(tiara),(wheels),(windows)
LIST c=(bumpy),(fluffy),(furry),(fuzzy),(glittery),(glossy),(hairy),(red),(rough),(rusty),(shiny),(silky),(slippery),(soft),(sparkly),(squashy),(thick),(velvety),(woolly)

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


Хотя в зависимости от того, что считается списком, есть и другие подходы. Если список может быть функцией, которая случайным образом возвращает элемент списка, следующий подход составляет всего 91 байт:

~temp t=u()
-(l)That's{l<6: not} my {t}{l<6:, i|! I}ts {p()} is {l<6:to|s}o {q()}
{l<6:->l}

(«списки» определены следующим образом)

==function u
~return "{~dinosaur|lamb|princess|reindeer|train}"
==function p
~return "{~back|bells|body|bows|crown|dress|ears|engine|fan|flippers|funnel|hooves|horns|neck|nose|roof|sash|side|spines|spots|tail|teeth|tiara|wheels|windows}"
==function q
~return " {~bumpy|fluffy|furry|fuzzy|glittery|glossy|hairy|red|rough|rusty|shiny|silky|slippery|soft|sparkly|squashy|thick|velvety|woolly}."

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


Там также следующий подход.

~temp t="{~dinosaur|lamb|princess|reindeer|train}"
-(l)That's{l<6: not} my {t}{l<6:, i|! I}ts {~back|bells|body|bows|crown|dress|ears|engine|fan|flippers|funnel|hooves|horns|neck|nose|roof|sash|side|spines|spots|tail|teeth|tiara|wheels|windows} is {l<6:to|s}o {~bumpy|fluffy|furry|fuzzy|glittery|glossy|hairy|red|rough|rusty|shiny|silky|slippery|soft|sparkly|squashy|thick|velvety|woolly}
{l<6:->l}

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

Это решение составляет 389 байт, но если литералы тасования (которые в этом сценарии не могут быть перемещены) считаются определениями списка и могут быть исключены из числа байтов, это уменьшается до 80 байт.


0

Bash + awk, 209 байт

T=$(shuf $1|head -1)
join <(sed "s/.*/$T\t&/" $2) <(sed "s/.*/$T\t&/" $3)|shuf|awk 'NR<6{printf "That'\''s not my %s, its %s is too %s.\n",$1,$2,$3}NR==6{printf "That'\''s my %s! Its %s is so %s.\n",$1,$2,$3}'

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

Принимает входные данные как things parts properties где каждый является файлом с одним элементом в строке нужного типа.

Это файлово-ориентированный подход. Позже можно попробовать подход на основе массива, чтобы посмотреть, можно ли его улучшить.


-2

Python 3, 130 байт

Буквально принимая ваши требования и возвращая каретки по одному байту каждый:

y=0
def x():
    global y
    y=1-y 
    print(("That's not my lamb, it's "+b[0:1][y]+" is too red\n")*5+"That's my lamb! Its fan is so red")

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