Mười yếu tố hàng đầu bạn sẽ không tin vào mảng này


10

AKA: Tạo Clickbait từ một mảng.

Đưa ra một loạt các số nguyên, tạo ra một số clickbait đáng giá dựa trên sự sắp xếp và độ dài của nó:

  • Nếu đó là 20 yếu tố hoặc ít hơn, bạn có thể tạo Danh sách X hàng đầu. Các tham số: chiều dài của mảng.
  • Số nguyên tố là những người nổi tiếng, vì vậy bất cứ khi nào hai trong số họ ở cạnh nhau, nó sẽ vượt qua như tin đồn. Tham số: hai số nguyên tố liền kề theo thứ tự chúng xuất hiện trong mảng.
  • Nếu bất kỳ số nào xuất hiện hai lần trở lên trong mảng, thì điều đó gây sốc và không thể tin được và mọi người cần phải nghe về nó. Nếu nhiều số xuất hiện hai lần, tạo một câu chuyện tin tức cho mỗi một. Chỉ in cái này một lần cho mỗi số duy nhất. Các thông số: sự xuất hiện của số được đo bằng tổng diện mạo.
  • Nếu bạn thấy hơn 3 thành phần theo thứ tự tăng đơn điệu được sắp xếp , theo sau là giảm đột ngột, sau đó cho biết cách chúng được sắp xếp và trêu chọc về những gì xảy ra tiếp theo. Chỉ làm điều này một lần mỗi thẳng. Thông số: chiều dài của đường thẳng.

Đây là những clickbaits tương ứng bạn nên sử dụng:

The Top {{N}} Array Elements
{{N1}} And {{N2}} Were Spotted Together, You Won't Believe What They Did
These {{N}} Elements Will Blow Your Mind
{{N}} Elements Sort Themselves, Find Out What Comes Next

Hãy nhớ rằng, bạn đại diện cho một công ty truyền thông giá rẻ, vì vậy bạn sẽ cần vắt sữa này và in mọi tiêu đề có thể. Nếu có 2 tiêu đề giống hệt nhau, hãy in cả hai.

Ví dụ: nếu bạn được cung cấp mảng này

1,2,3,4,2,1,1,5,6

Bạn nên xuất tất cả những thứ này, theo thứ tự tùy ý:

The Top 9 Array Elements
2 And 3 Were Spotted Together, You Won't Believe What They Did
These 2 Elements Will Blow Your Mind
These 3 Elements Will Blow Your Mind
4 Elements Sort Themselves, Find Out What Comes Next

Lưu ý thiếu tiêu đề này:

3 Elements Sort Themselves, Find Out What Comes Next

Là mã golf, câu trả lời ngắn nhất tính bằng byte sẽ thắng.


1
@Arnauld không có giảm đột ngột ở đó, vì vậy chỉ cần in 3 tiêu đề đầu tiên.
Nissa

1
Thông thường tôi không downvote, nhưng -1 chỉ tạo ra một thử thách chỉ để sử dụng tiêu đề mồi nhấp chuột và định dạng đầu ra hoàn toàn không cần thiết cho thử thách loại "làm A, B và C, oh và cả D". Bạn thực sự nên đọc những điều cần tránh khi viết thử thách .
ბიმო

8
@BMO Có lẽ bạn nên đọc hộp cát thường xuyên hơn. Điều này đã ở đó trong một thời gian đáng kể, khi bạn có thể đã nói lên ý kiến ​​của mình. Ngoài ra, nhiều thử thách trên trang web này sử dụng clickbait, không phải đây là thử thách duy nhất để làm như vậy lol
Conor O'Brien

6
Có đủ các trường hợp cạnh mà tôi đề nghị bạn viết một triển khai tham chiếu thể hiện các câu trả lời logic chính xác nên tuân theo.
Lynn

5
@ ConorO'Brien: Có lẽ tôi nên, nếu tôi thấy nó ở đó tôi đã nói lên ý kiến ​​của mình ở đó. Nhưng tôi nghĩ rằng tôi sẽ đưa ra một lý do cho downvote của mình bởi vì âm thầm downvote không có ích cho bất cứ ai. Về mồi nhấp chuột, tôi nghĩ rằng có một sự khác biệt lớn giữa một tiêu đề hấp dẫn cho một thử thách tốt và một thử thách chỉ được thực hiện khi sử dụng tiêu đề mồi nhấp chuột.
ბიმო

Câu trả lời:


5

Thạch , 142 byte

I>-ṣ0ṖS€ỊÐḟ‘ɓĠL€ḟ1,ɓ¹ƝÆPẠ$ÐfW;ɓLẋ<¥21W;ż@€"“æƥu®ụ³Km&|°ẓz“ṿ$¥{d3ɓFȤSJẎVḍnṃ*¹0Ḟ¬ȤɲƝċƲạB'ɼɓ.€⁺Ƒ“¢ßUṡʠx\~⁻ḅėʠAƓḳ¶e<“½ė!Ƙ¥Ḍ3]⁷ṀƭȮþċ⁽?ṫĠƁÆȦØ⁾Ż»ṣ€⁷¤

Một liên kết đơn âm chấp nhận danh sách các số nguyên, trả về một danh sách các danh sách các clickbaits (mỗi danh sách là một danh sách các ký tự và số nguyên). Đối với một clickbaits tách dòng chương trình in đầy đủ chương trình, chỉ cần thêm ẎYvào cuối.

Hãy thử trực tuyến! (Footer tạo một danh sách các clickbaits duy nhất và sau đó phân tách chúng bằng các dòng mới.)
... hoặc xem ví dụ được đưa ra trong câu hỏi.

Làm sao?

99 byte bên phải nhất của Liên kết này tạo thành một nilad (một hàm có đối số bằng 0, tức là hằng số):

“...“...“...“...»ṣ€⁷¤
                    ¤ - nilad followed by link(s) as a nilad:
“...“...“...“...»     - list of compressed strings (the four clickbait-texts with the
                      -   integers replaced with line-feed characters)
                   ⁷  - literal line-feed character
                 ṣ€   - split-at for €ach (read to interweave with the integers)

Hãy gắn nhãn các phần văn bản này là X, bây giờ Liên kết là:

I>-ṣ0ṖS€ỊÐḟ‘ɓĠL€ḟ1,ɓ¹ƝÆPẠ$ÐfW;ɓLẋ<¥21W;ż@€"X - Link: list of integers Z
                                             - # get the monotonically increasing runs:
I                                            - incremental differences of Z
 >-                                          - greater than -1 (vectorises)
   ṣ0                                        - split at zeros
     Ṗ                                       - pop (discard final run)
      S€                                     - sum each (length - 1 for all runs)
         Ðḟ                                  - filter discard if:
        Ị                                    -   insignificant (discard any 0s or 1s)
           ‘                                 - increment (yielding all run-lengths >= 3)
            ɓ                                - new dyadic chain with that on the right
                                             - # get the multiplicities:
             Ġ                               - group indices of Z by value
              L€                             - length of €ach
                ḟ1                           - filter discard 1s
                  ,                          - pair with right (the run-lengths)
                   ɓ                         - new dyadic chain with that on the right
                                             - # get the prime-pairs
                     Ɲ                       - for each pair in Z
                    ¹                        -   identity (do nothing)
                          Ðf                 - filter keep if:
                         $                   -   last two links as a monad:
                      ÆP                     -     is prime? (vectorises)
                        Ạ                    -     all?
                            W                - wrap in a list
                             ;               - concatenate with right ([multiplicities,runs])
                              ɓ              - new dyadic chain with that on the right
                                             - # get top count as a list
                               L             - length
                                   21        - literal 21
                                  ¥          - last two links as a dyad
                                 <           -   less than? (1 if 20 or less, else 0)
                                ẋ            -   repeat ([length] if 20 or less, else [])
                                     W       - wrap in a list (i.e. [[length]] or [[]])
                                      ;      - concatenate with right ([[prime pairs],[multiplicities],[run-lengths]])
                                             - ...now we have [[length],[prime pairs],[multiplicities],[run-lengths]]
                                          "X - zip with X (the text-parts)
                                         €   -   for each (item in the current list):
                                       ż@    -     interleave with swapped arguments

Ấn tượng! : P Thậm chí không sử dụng các câu ... wow
NL628

2
Đó là bởi vì Jelly có khả năng có chuỗi nén. Các câu có trong “...“...“...“...»phần mã, với các nguồn cấp dữ liệu thay cho các số - như thế này
Jonathan Allan

1
Đó là toàn bộ Jelly lotta ...
Khuldraeseth na'Barya

Trò chơi thạch dài nhất tôi từng thấy. Câu trả lời của tôi ở đây đến gần nhưng vẫn ngắn hơn 16 byte
dylnan

@dylnan Tôi một vài sân gôn Jelly dài hơn, một vài trong số đó tôi nghĩ là ấn tượng hơn
Jonathan Allan

2

Java 10, 467 457 456 453 byte

a->{int l=a.length,i=0,p=0,P=0,m[]=new int[999],t;String e=" Elements ",r=l<21?"The Top "+l+" Array"+e+"\n":"";for(;i<l;r+=i>0&&p(p)>1&p(t=a[i-1])>1?p+" And "+t+" Were Spotted Together, You Won't Believe What They Did\n":"",m[a[i++]]++)if(p<(p=a[i]))P++;else{r+=P>2?P+e+"Sort Themselves, Find Out What Comes Next\n":"";P=1;}for(;l-->0;r+=m[l]>1?"These "+m[l]+e+"Will Blow Your Mind\n":"");return r;}int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

Giả sử mảng đầu vào sẽ chứa các giá trị 0 < N < 1000( [1,999]).

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

a->{                     // Method with integer-array parameter and String return-type
  int l=a.length,        //  Length of the input-array
      i=0,               //  Index-integer
      p=0,               //  Previous item, starting at 0
      P=0,               //  Sequence-counter, starting at 0
      m[]=new int[999],  //  Element-counter array, starting filled with 0s
      t;                 //  Temp-integer to reduce the byte-count
  String e=" Elements ", //  Temp-String " Elements " to reduce byte-count
         r=l<21?         //  If the size of the input-array is 20 or less:
            "The Top "+l+" Array"+e+"\n"
                         //    Start the result-String with 'length' gossip-line
           :             //   Else:
            "";          //    Start the result-String empty
  for(;i<l               //  Loop over the input-array
      ;                  //    After every iteration:
       r+=i>0&&          //     If this is not the first item,
           p(p)>1&p(t=a[i-1])>1?
                         //     and the current and previous items are both primes:
             p+" And "+t+" Were Spotted Together, You Won't Believe What They Did\n":"",
                         //      Append the 'two primes' gossip-line
       m[a[i++]]++)      //     Increase the counter of the current value by 1
    if(p<(p=a[i])        //   If the previous item is smaller than the current:
      P++;               //    Increase the sequence-counter by 1
    else{                //   Else:
      r+=P>2             //    If the sequence-counter is 3 or larger:
          P+e+"Sort Themselves, Find Out What Comes Next\n":"";
                         //     Append the 'sequence' gossip-line
      P=1;}              //    Reset the sequence-counter to 1
  for(;l-->0;            //  Loop over the Element-counter array
      r+=m[l]>1?         //   If this element occurred at least two times:
          "These "+m[l]+e+"Will Blow Your Mind\n":"");
                         //    Append the 'occurrence' gossip-line
  return r;}             //  Return the result

// Separated method to check if the given number is a prime
// If `n` is a prime, it remains the same; if not: either 1 or 0 is returned
int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

1
  • vẫn chơi golf nhưng sự giúp đỡ sẽ được đánh giá cao

JavaScript (Node.js) , 397 byte

a=>a.map(x=>(l<=x?s++:(s>2&&r.push(s+" Elements Sort Themselves, Find Out What Comes Next"),s=1),P(x)&&P(l)&&r.push(l+` And ${x} Were Spotted Together, You Won't Believe What They Did`),c[l=x]=-~c[x]),c=[s=l=r=[]])&&c.map((x,i)=>x>1&&c.indexOf(x)==i&&r.push(`These ${x} Elements Will Blow Your Mind`))&&[...r,...a[20]?[]:[`The Top ${a.length} Array Elements`]]
P=(n,i=1)=>n>1&&++i*i>n||n%i&&P(n,i)

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


Bạn có thể tiết kiệm bằng cách thay thế một nhân vật duy nhất như '!'với ' Elements '(hoặc tương tự)?
Jonathan Allan

Bạn đã thất bại trong việc xử lý chính xác hoạt động tăng đơn điệu của bàn tay phải mà không giảm dấu vết (liên kết bạn đưa ra không nên xuất ra "6 yếu tố sắp xếp bản thân, Tìm hiểu điều gì tiếp theo", vì không có "Tiếp theo")
Jonathan Allan

ThiếuThe Top * Array Elements
l4m2

Vâng, mã y này thậm chí còn ngắn hơn trong câu trả lời gốc của tôi, tôi đã làm theo cách này. sẽ được sửa @ l4m2 cảm ơn
DanielIndie

Tôi không chắc chắn 100%, vì câu trong mô tả thử thách có thể diễn giải theo hai cách, nhưng không nên [5,10,5,10]xuất These 2 Elements Will Blow Your Mindhai lần? Tôi nghĩ phần thử thách " Chỉ in số này một lần cho mỗi số duy nhất. " Có nghĩa là các số 510, không phải số N=2. Nhưng có lẽ yêu cầu OP xác minh. Nếu thứ hai, việc thực hiện của bạn là chính xác và ba câu trả lời khác là không chính xác. Nếu lần đầu tiên chỉ thực hiện của bạn là không chính xác.
Kevin Cruijssen

1

JavaScript (Node.js) , 351 350 349 347 byte

a=>a.map((x,i)=>c[s=x>=l?-~s:++s>2&&(t+=s+` Elements Sort Themselves, Find Out What Comes Next
`),P(x)&P(l)&&(t+=l+` And ${x} Were Spotted Together, You Won't Believe What They Did
`),l=x]=-~c[x],t=a[20]?'':`The Top ${a.length} Array Elements
`,c=[s=l=P=(n,i=n)=>n%--i?P(n,i):1/i])+c.map(x=>x>1&&(t+=`These ${x} Elements Will Blow Your Mind
`))&&t

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

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.