Це не мій 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 Це моя таксономічна помилка. Хоча обидва класифікуються як Глірес, тож це я сьогодні дізнався.
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.impressive
Джон Хант

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стільки разів коштує стільки символів! Однак, якщо ви не хочете повторювати деталі та властивості, я не можу в подальшому зменшити це в повному обсязі. Якщо ви не перемістите перші 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
Ласкаво просимо! Деякі легкі гольфи зменшують вас до 147 байт
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)

вхід - це три масиви, повертає рядок



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 був занадто довгим, на жаль! Сподіваюся, вам сподобається ваше перебування: o)
Sok

1
Один невеликий гольф і для вас - \rне потрібен, що дозволить вам заощадити 2 байти.
Sok

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")

Існує невелика проблема з використанням функції 'Header' у 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-х рядків коду є зайвим і химерним.


Вам заборонено приймати дані за допомогою попередньо визначених змінних. Вам доведеться сприймати це як фактичне введення за допомогою будь-якого зі стандартних методів
Jo King

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")

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