Đó không phải là X của tôi, Y của nó quá Z


17

Thử thách này được lấy cảm hứng từ một loạt sách thiếu nhi của Fiona Watt và Rachel Wells, mà gần đây tôi đã được thưởng thức với con gái mình.

Trong mỗi cuốn sách, một con chuột (được minh họa, nhưng không phải là một phần của văn bản) phàn nàn rằng một chuỗi 5 điều cùng loại không phải là điều của nó. Sau đó, nó ủng hộ điều này bằng cách tuyên bố rằng một số thành phần của sự vật không có tài sản mà nó mong đợi.

Vào lần thứ sáu của câu hỏi, con chuột tìm thấy điều của nó và hài lòng vì nó có tài sản dự kiến.

Đây là văn bản của một ví dụ điển hình:

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.

Bây giờ, hầu hết dân gian lập trình sẽ nhận ra rằng đây là một phương pháp rất thuật toán để tạo ra một số văn bản. Bởi vì đó là một quá trình rõ ràng, chúng ta sẽ có thể tái tạo điều này bằng cách viết một số mã.

Hãy bắt đầu với ba bộ sưu tập các từ:

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"]
  • Đầu tiên, chúng tôi quyết định loại nào chúng tôi sẽ mô tả.
  • Sau đó 5 lần, chúng tôi sẽ tạo ra dòng "Đó không phải là [thứ] của tôi, [phần] của nó quá [thuộc tính].
  • Cuối cùng, chúng tôi tạo ra dòng "Đó là [thứ] của tôi! [Phần] của nó là [tài sản]!

Các thách thức

  • Tạo văn bản của câu chuyện "Đó không phải là ..." của tôi.
  • Nó không nhất quán phải sao chép cùng một văn bản.
  • Đó là mã golf, vì vậy hãy thử làm như vậy với số byte nhỏ nhất.
  • Sử dụng bất kỳ ngôn ngữ nào bạn muốn.
  • Khoảng trắng không quan trọng, nhưng phải có một ký tự dòng mới giữa các dòng.
  • Danh sách các từ nguồn không phải là một phần câu trả lời của bạn (trong TIO chúng có thể được thêm vào tiêu đề).
  • Bạn có thể đổi tên danh sách các từ nguồn.
  • Đầu ra có thể là đầu ra cho một thiết bị đầu cuối hoặc văn bản được tạo thành một đối tượng.
  • Vui lòng bao gồm một liên kết đến một thông dịch viên trực tuyến.
  • Bỏ qua số nhiều, "sừng của nó là" là tốt.
  • Nó không cần phải có ý nghĩa. Nếu phễu của công chúa của bạn quá mịn, chỉ cần nói như vậy.

Đầu ra mẫu:

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.

Chúc bạn chơi golf vui vẻ!


2
@Shaggy Ví dụ đầu tiên là văn bản thực tế của một trong những cuốn sách. Đây không phải là một câu trả lời hợp lệ cho thử thách này. Tôi đã nói bỏ qua số nhiều để đơn giản hóa thử thách một chút. Ví dụ đó về cơ bản là thông tin cơ bản.
AJFaraday


10
Bạn nói "Không cần phải có ý nghĩa.", Điều đó có mở rộng đến gần các cơn co thắt không? (tức là "Đó không phải là chú thỏ của tôi, đôi mắt của nó quá sáng. ... Đó là chú thỏ của tôi! Đôi mắt của nó rất sáng bóng."
Jonathan Allan

13
Không phải "Nó không nhất quán phải sao chép cùng một văn bản" và loại phức tạp kolmogorov không tương thích?
Joseph Sible-Phục hồi Monica

2
@ChrisH Đó là sai lầm phân loại của tôi. Mặc dù cả hai đều được phân loại là Glires, vì vậy đó là điều tôi đã học được ngày hôm nay.
AJFaraday

Câu trả lời:


1

05AB1E , 63 byte

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

Hãy thử trực tuyến.

Phiên bản 68 byte không xuất ra các phần trùng lặp cũng như các thuộc tính:

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

Hãy thử trực tuyến.

Cả hai chương trình đều giả định danh sách các thứ là đầu vào đầu tiên và một danh sách chứa danh sách các bộ phận và danh sách các thuộc tính là đầu vào thứ hai.

Giải trình:

Ω            # 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

Xem mẹo 05AB1E này của tôi (phần Làm thế nào để sử dụng từ điển? ) Để hiểu tại sao “€Š's€¯ ÿ!€ç ÿ€ˆ€Ê ÿ.“"that's my ÿ! its ÿ is so ÿ."“€Š's€–€¯ ÿ,€ç ÿ€ˆ…« ÿ.“"that's not my ÿ, its ÿ is too ÿ.".


10

Python 3 , 149 byte

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*

Hãy thử trực tuyến!

-9 byte nhờ vào Movatica


Công việc tốt đẹp! Cú pháp tuple ngắn hơn: 149 byte
Movatica

1
@movatica Ôi, đẹp quá. Cảm ơn!
HyperNeutrino

"Đó không phải là tuần lộc của tôi, tai của nó quá mấp mô." - cần một cái gì đó để chuyển đổi giữa / đang.
John Hunt

1
@JohnHunt các quy tắc nói bỏ qua số nhiều.
HyperNeutrino

Lỗi của tôi. Đây là v.impressive
John Hunt

8

Than , 72 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Hy vọng các mảng của sự vật, các bộ phận và các thuộc tính được trong các biến θ, ηζ, đó là dễ dàng nhất sắp xếp bằng cách cung cấp cho họ trong đầu vào chứ không phải là tiêu đề. Giải trình:

≔‽θθ

Chọn một điều ngẫu nhiên.

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

In năm câu phủ định.

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

In câu tích cực.


6

Japt v2.0a0 -R, 73 byte

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

Đưa ba danh sách như U, V, và W. Đó là những biến đầu vào mặc định, vì vậy chỉ cần đặt ba danh sách trong phần đầu vào.

Thử nó

ö                         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

Thủ thuật rất hay với "too / so" :)
Shaggy

6

PowerShell , 147 byte

Chương trình chính này sẽ không lặp lại bất kỳ phần hoặc tài sản nào trong một lần chạy và có sự ngẫu nhiên hợp lý.

$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]

Hãy thử trực tuyến!

Viết get-randomrất nhiều lần chi phí rất nhiều nhân vật! Tuy nhiên, trừ khi bạn sẵn sàng để các bộ phận và thuộc tính được lặp lại, tôi không thể thấy một cách nào để thu nhỏ điều này trong quyền hạn nữa. Trừ khi bạn di chuyển 3 đường ống đầu tiên đến cuối 3 đường gán trong tiêu đề. Để có một cái gì đó như

# 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]

Nhưng có vẻ như đó là gian lận, và vẫn không đánh bại câu trả lời của Neil.

Chỉnh sửa: Cảm ơn vì lời khuyên Matt và cảm ơn admBorkBork vì đã loại bỏ chúng, loại bỏ 3 bộ get-văn bản đã giảm xuống còn 159 byte, sau đó một số golf khác từ adm đã giảm xuống còn 147. Mã tôi nghĩ là cho phép sao chép và tuyên bố mâu thuẫn là 144 ký tự sau khi áp dụng các mẹo chơi golf tương tự.

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

Hãy thử trực tuyến!

Tuy nhiên, nó không chỉ có xu hướng nói cùng một điều nhiều lần, mà còn đòi hỏi khá nhiều đầu vào của bạn phải có cùng số lượng phần tử. Tôi tin rằng trình tạo số ngẫu nhiên giả đang được sử dụng phụ thuộc rất nhiều vào đồng hồ và các cuộc gọi lặp lại nhanh đến nó thường có thể dẫn đến kết quả tương tự. Sau đó, nó có điều kiện là nó chỉ sử dụng toàn bộ danh sách nếu tất cả các danh sách có cùng độ dài. Với việc chỉ lưu 3 ~ 5 ký tự và có quá nhiều cảnh báo, tôi thích mã ở đầu bài này.


1
Chào mừng đến với PPCG! Các bộ phận và thuộc tính có thể được lặp lại để giúp bạn tiết kiệm một số byte.
Xù xì

2
Bạn có thể thả Get-từ Get-Random. Động từ mặc định của nó được kiểm tra khi đánh giá các lệnh.
Matt

2
Chào mừng bạn Một số môn đánh gôn dễ dàng giúp bạn giảm xuống còn 147 byte
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)

đầu vào là ba mảng, trả về chuỗi



2

C # , 204 203 byte

()=>{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)]}.";};

Đây là câu trả lời đầu tiên của tôi trên trang web này, vì vậy tôi hy vọng nó hoạt động tốt. Nó cũng cần ba thứ đó, nhưng theo câu hỏi thì không được tính:

   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"};

Hãy thử trực tuyến!

Một byte ít hơn nhờ có Sok.


1
Chào mừng đến với PPCG! Tôi đã tự do chỉnh sửa trong một liên kết đến TIO vào câu trả lời của bạn, để người khác có thể dễ dàng tự thử mã của bạn - Tôi sẽ cung cấp cho bạn liên kết đến nó trong nhận xét này, nhưng URI quá dài! Tôi hy vọng bạn tận hưởng kỳ nghỉ của bạn: o)
Sok

1
Một sân golf nhỏ cho bạn cũng vậy - \rkhông cần thiết, sẽ giúp bạn tiết kiệm 2 byte.
Sok

1

APL (Dyalog Unicode) , 117 byte 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]

Hãy thử trực tuyến!

?N tạo ra một chỉ số ngẫu nhiên trong số các chỉ số N đầu tiên.

M?N tạo ra các chỉ số ngẫu nhiên M (không thay thế) trong số các chỉ số N đầu tiên.

, là ghép

t←T⊃⍨Sọ chọn một thứ ngẫu nhiên và gọi nó tđể tái sử dụng ở dòng cuối cùng.

∘,¨ nối chuỗi bên trái với mỗi chuỗi bên phải.

nối từng chuỗi bên trái với từng chuỗi bên phải.

 thay đổi danh sách các chuỗi thành một ma trận ký tự để nó in đúng.


1

Pyth , 88 78 76 byte

JONj_ms.ic"That's
 my 

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

Hãy thử trực tuyến!

Mã được trình bày ở trên yêu cầu tiêu đề sau:

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

Có một vấn đề nhỏ khi sử dụng tính năng 'Tiêu đề' trong TIO với Pyth, vì có vẻ như TIO tham gia các khối mã trên dòng mới và dòng mới có ý nghĩa trong Pyth. Đây là một liên kết đến cùng một mã bằng cách sử dụng khối 'Tiêu đề', với một dòng rác ở đầu ra.

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

Chỉnh sửa: Viết lại thành golf 10 byte, phiên bản trước: 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 byte

Chạy với 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?) Byte

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


Chào mừng bạn đến với Code Golf! Làm tốt lắm!
AJFaraday

1
Cảm ơn AJ! Trân trọng sự chào đón :)
Onitz

1

Batch File, 434 424 + 7 byte

Thực hiện thông qua cmd/q/c.

Mã không được tính

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

Mã được tính

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.

Tôi sẽ trải qua một số thách thức bạn phải đối mặt và giải thích / biện minh cho những gì tôi đã làm để những người khác có thể cải thiện.

Chọn một phần tử ngẫu nhiên từ một mảng
tôi đã làm điều này bằng cách tạo một số ngẫu nhiên giữa 1nnơi nlà số lượng phần tử trong mảng đó. Sau đó, tôi đã sử dụng số ngẫu nhiên này làm mã thông báo để lấy trong mỗi forvòng lặp ( tokens=%r%). Bởi vì tôi đã làm theo cách này, tôi không thể lồng những forvòng lặp này nữa, nhưtokens=!r! nó không hoạt động với tôi (với việc mở rộng bị trì hoãn). Điều này đã lưu khá nhiều byte vì nó sẽ loại bỏ nhu cầu lưu mã thông báo dưới dạng biến ( set x=%%x).

Tạo số ngẫu nhiên
m là macro tạo số ngẫu nhiên của tôi. Làm theo cách này giúp tiết kiệm 32 byte so với thực hiện như set/ar=%random%%%n+1mọi dòng. Bạn có thể bán gian lận và quyết định rằng các mã thông báo yzphải là cùng một yếu tố:

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.

Điều này sẽ, trong khi vẫn giữ một số ngẫu nhiên, loại trừ 6 yếu tố cuối cùng của c. Điều này sẽ tiết kiệm tối thiểu 20 byte, nhưng tôi không nghĩ điều này đúng với yêu cầu của op.

Những cải tiến về mặt lý thuyết
Tôi đã dành khá nhiều thời gian để cố gắng làm cho "mã giả" này hoạt động, trong khi vẫn tiết kiệm được byte:

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%%

Thật không may, thiết lập cho việc này đang chứng tỏ mất quá nhiều byte để có lợi nhuận (phải thực hiện trong <144 byte) nhưng tôi không thể lay chuyển được cảm giác rằng việc thêm 4 dòng mã cuối cùng là thừa và tưng bừng.


Bạn không được phép lấy đầu vào thông qua các biến được xác định trước. Bạn sẽ phải sử dụng nó làm đầu vào thực tế thông qua bất kỳ phương pháp IO tiêu chuẩn nào
Jo King

1
@JoKing Từ thử thách:The lists of source words are not part of your answer (in TIO they can be added to the header).
admBorkBork

Tôi không chắc liệu nó có được phép hay không vì tôi đã thấy nó được thực hiện theo cả hai cách trong các câu trả lời khác, nhưng đối với những bạn tò mò, nó sẽ thêm 29 byte vào câu trả lời của tôi dưới dạng set a=%~1, v.v.
BDM

1

mực , 119 byte

~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}

Với các danh sách được xác định 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)

Hãy thử trực tuyến!


Mặc dù tùy thuộc vào những gì được coi là một danh sách, có những cách tiếp cận khác. Nếu một danh sách có thể là một hàm trả về ngẫu nhiên một mục danh sách, thì cách tiếp cận sau chỉ là 91 byte:

~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}

(với "danh sách" được định nghĩa như sau)

==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}."

Hãy thử trực tuyến!


Cũng có cách tiếp cận sau đây.

~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}

Hãy thử trực tuyến!

Giải pháp này là 389 byte, nhưng nếu chữ xáo trộn (trong kịch bản này không thực sự được di chuyển) được tính là định nghĩa danh sách và có thể được loại trừ khỏi số byte, thì điều này giảm xuống còn 80 byte.


0

Bash + awk, 209 byte

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}'

Hãy thử trực tuyến!

Chấp nhận đầu vào như things parts properties mỗi tệp là một tệp với một mục trên mỗi dòng của loại mong muốn.

Đây là một cách tiếp cận tập trung vào tập tin. Có thể thử một cách tiếp cận tập trung vào mảng sau để xem nó có thể được cải thiện không.


-2

Python 3, 130 byte

Lấy yêu cầu của bạn theo nghĩa đen và lấy vận chuyển trở lại mỗi byte một:

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

"Nó không nhất quán phải sao chép cùng một văn bản." Từ những gì tôi có thể nói, mã của bạn sẽ luôn xen kẽ giữa một trong hai tùy chọn, có vẻ như là đầu ra phù hợp với tôi. Ngoài ra, trường hợp luôn luôn sử dụng các thuộc tính giống nhau trên mỗi dòng đơn lẻ đã không được phép rõ ràng trong phần làm rõ ý kiến.
Mực giá trị
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.