Một Terza Rima rất dài


38

Sự miêu tả

Xuất sơ đồ vần cho một Terza Rima rất dài.

Đầu vào

Không ai.

Đầu ra

ABA
BCB
CDC
DED
EFE
FGF
GHG
HIH
IJI
JKJ
KLK
LML
MNM
NON
OPO
PQP
QRQ
RSR
STS
TUT
UVU
VWV
WXW
XYX
YZY

Quy tắc

Bạn có thể chọn giữa các khổ thơ tách biệt với khoảng trắng hoặc dòng mới, vì vậy:

ABA BCB...

HOẶC LÀ

ABA
BCB
...

Một khoảng trắng theo dõi duy nhất được phép cho mỗi dòng và một dòng mới được phép.

Đầu ra có thể là chữ hoa hoặc chữ thường.

Đây là , vì vậy mã ngắn nhất tính theo byte cho mỗi ngôn ngữ sẽ thắng.


4
Một danh sách các dòng có ổn không?
hoàn toàn là

6
Theo en.wikipedia.org/wiki/Terza_rima kết thúc của bạn là sai. Nó sẽ kết thúc bằng Z hoặc ZZ.
Chris

Có thể có đầu ra bổ sung ngoài sơ đồ vần? Điều này có thể tiết kiệm cho tôi một vài byte.
NK1406

@ NK1406 Không xin lỗi.
LiefdeWen

1
@totallyhuman Chuỗi mảng là tốt.
LiefdeWen

Câu trả lời:


24

JavaScript (ES6), 51 50 49 byte

Đã lưu 1 byte nhờ @ l4m2

f=(n=45358)=>n%63?f(n-1333)+n.toString(36)+' ':''

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

Làm sao?

Chúng tôi bắt đầu với n = 45353 ( yzy trong cơ sở-36). Chúng tôi trừ 1333 từ n ở mỗi lần lặp ( 111 trong cơ sở-36). Chúng tôi dừng ngay khi n MOD 63 = 0 , vì 12033 ( 9a9 trong cơ sở-36) là giá trị đầu tiên mà điều kiện này được đáp ứng và 63 là modulo nhỏ nhất có thuộc tính như vậy.

Decimal | Base-36 | MOD 63
--------+---------+-------
  45358 |   yzy   |   61
  44025 |   xyx   |   51
  42692 |   wxw   |   41
  41359 |   vwv   |   31
  40026 |   uvu   |   21
  38693 |   tut   |   11
  37360 |   sts   |    1
  36027 |   rsr   |   54
  34694 |   qrq   |   44
  33361 |   pqp   |   34
  32028 |   opo   |   24
  30695 |   non   |   14
  29362 |   mnm   |    4
  28029 |   lml   |   57
  26696 |   klk   |   47
  25363 |   jkj   |   37
  24030 |   iji   |   27
  22697 |   hih   |   17
  21364 |   ghg   |    7
  20031 |   fgf   |   60
  18698 |   efe   |   50
  17365 |   ded   |   40
  16032 |   cdc   |   30
  14699 |   bcb   |   20
  13366 |   aba   |   10
  12033 |   9a9   |    0

Làm thế nào bạn quyết định cơ sở36? và bạn có chắc chắn tối ưu của nó?
LiefdeWen

2
@LiefdeWen Đây là cơ sở thấp nhất để chứa tất cả các chữ cái, vì vậy nó là tối ưu.
Erik the Outgolfer 18/12/17

@ user202729 Ý bạn là gì? Anh ấy không phải OP, vậy anh ấy là một trong những người mà bạn đề cập đến?
Erik the Outgolfer 18/12/17

17
Là một nút phụ thú vị (un), 1333 = 666 * 2 + 1 và đây là câu trả lời thứ 666 của tôi trên PPCG.
Arnauld

3
@Arnauld vui lòng đảm bảo bạn sử dụng giá trị 1335 ở đâu đó trong câu trả lời tiếp theo của bạn.
IanF1



9

Brainfuck , 51 48 byte

Đã lưu 3 byte nhờ @ovs.

++++++++[>+>+++>++++++++<<<-]>++>+[->+.+.-.<<.>]

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

Giải trình

INITIALIZE TAPE:

0000:           (none)
0001: C_NEWLINE (10)
0002: V_COUNT   (25)
0003: V_ALPHA   (64)
++++++++[>+>+++>++++++++<<<-]>++>+

V_COUNT TIMES:              [-
    INCREMENT V_ALPHA         >+
    PRINT V_ALPHA             .
    PRINT V_ALPHA PLUS ONE    +.
    PRINT V_ALPHA             -.
    PRINT C_NEWLINE           <<.
END LOOP                    >]

@ ConorO'Brien - Tôi chỉ nhận thấy rằng câu trả lời của tôi khá giống với câu trả lời của bạn. Xin vui lòng bình luận nếu bạn nghĩ rằng nó quá gần và tôi sẽ xóa nó.
ElPedro

1
@ElPedro Không, bạn ổn, không có nhiều cơ hội để đổi mới trong thử thách này :)
Conor O'Brien

9

05AB1E , 5 byte

Aü«€û

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

-1 byte nhờ Emigna
-1 byte nhờ thay đổi quy tắc; cảm ơn kalsowerus đã chỉ ra rằng

Hehe, hiện đang đánh bại Pyth. \ o /

Giải trình

Aü«€û»  Full Program
A       Lowercase Alphabet
 ü«     Pairwise with merge-list
   €û   For each, palindromize

Bạn có thể làmAü«€û»
Emigna

@Emigna O tuyệt, cảm ơn! : D
HyperNeutrino

Thật tuyệt, đó là những gì tôi nhận được mà không cần nhìn.
Bạch tuộc ma thuật Urn

Theo các ý kiến, một danh sách các chuỗi là tốt như đầu ra, bạn có thể loại bỏ tham gia.
kalsowerus

9

Brainfuck , 51 49 byte

+++++[>+++++>+++++++++++++>++<<<-]>[>.+.-.+>.<<-]

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

Một nỗ lực giải thích ...

+++++                     #Put 5 in cell 0 because that is the highest common denominator of 10, 65 and 25
[                         #Start loop
>+++++                    #Counter in cell 1 is 25 (How many lines we must print)
>+++++++++++++            #Counter in cell 2 is 65 (ASCII A)  
>++                       #Counter in cell 3 is 10 (Newline)
<<<-]                     #Decrement the outer counter until the cells have the right values (muliples of 5).
>                         #Move to the counter that says how many lines we must print.
[>.                       #Print the character in cell 2
+.                        #Add one to the character in cell 2 and print it
-.                        #Subtract one from the character in cell 2 and print it
+                         #Add one to the character in cell 2 for the next loop
>.                        #Print a new line
<<-]                      #Decrement cell 1 and run again until cell 1 is 0

-2 với lời cảm ơn @ovs

Nỗ lực đầu tiên của tôi tại brainfuck để mọi gợi ý đều biết ơn. Nếu tôi có nhiều kinh nghiệm hơn với nó thì tôi chắc chắn rằng tôi có thể cạo thêm vài byte nhưng tôi chỉ nhận được vào ngày hôm qua.





6

Than , 11 byte

E²⁵✂αι⁺²ι‖O

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

 ²⁵         Literal 25
E           Map over implicit range
    α       Predefined uppercase letters
   ✂ ι⁺²ι   Slice 2 characters
            Implicitly print result on separate lines
         ‖O Reflect with overlap

6

Brain-Flak , 90 byte

((((()()()){}){}){}()){(({})<((({}((((()()()()){}){}){}){})())[()])((()()()()()){})>[()])}

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

Một lý do này ngắn hơn câu trả lời não bộ khác là vì nó sử dụng chữ hoa thay vì ký tự chữ thường, có giá trị ASCII nhỏ hơn và do đó dễ đẩy hơn.

Giải trình:

#Push 25
((((()()()){}){}){}())

#While true
{

    #Keep track of the number on top of the stack...
    # We'll call it 'a'
    (({})

        #Push A +...
        <((({}

        # 64 (push)
        ((((()()()()){}){}){}){})
        # + 1 (push)
        ())
        # - 1 (push)
        [()])

        # Push 10
        ((()()()()()){})>

    # Now that's all pushed, we push a - 1 to decrement the loop counter
    [()])

# Endwhile
}

Tôi viết phiên bản đầu tiên và không nhận được thông báo bạn viết phiên bản golf và nhận +5. ???
Christopher

5

R, 51 47 byte

L=LETTERS;cat(sprintf("%s%s%1$s",L[-26],L[-1]))

Đầu ra:

> L=LETTERS;cat(sprintf("%s%s%1$s",L[-26],L[-1]))
ABA BCB CDC DED EFE FGF GHG HIH IJI JKJ KLK LML MNM NON OPO PQP QRQ RSR STS TUT UVU VWV WXW XYX YZY

Cách ngây thơ mà không ưa thích sprintf49 byte
Giuseppe

@Giuseppe đó là vì tôi đã không sử dụng sprintfđúng cách :)
plannapus

OK, nhưng tôi đã tìm thấy 40 byter :)
Giuseppe

@Giuseppe ouch :)
plannapus

1
một [40 byter] khác [ tio.run/##K/r/, dựa trên việc chuyển đổi mã ASCII, trong trường hợp
NofP

5

Java 8 , 132 85 62 60 byte

  • 47 byte nhờ Neil
  • 26 byte nhờ Oliver
  • 3 byte và định dạng tốt hơn nhiều nhờ Kevin
  • Đã sửa lỗi bởi Oliver

Chơi gôn

a->{for(char i=64;++i<90;)System.out.println(""+i+++i--+i);}

Bị đánh cắp

public class TerzaRima {
    interface A{
        void a(String a);
    }
    static A a = a -> {
        for (char i = 64; ++i < 90; ) System.out.println("" + i++ + i-- + i);
    };
    public static void main(String[] args){
        a.a(null);
    }
}

1
In một mảng char có lẽ sẽ ngắn hơn rất nhiều.
Neil

1
Bạn có thể làm cho imột charquá?
Neil

2
a->{for(char c=64;++c<90;)System.out.println(""+c++ +c--+c);}(62 byte)
Olivier Grégoire

2
Hiện tại đây là đoạn mã thay vì chức năng hoặc chương trình, vì vậy bạn sẽ phải thêm đoạn trích v->{...}như đã đề cập ở trên bởi @ OlivierGrégoire. ( Trong trường hợp bạn không biết cách hoạt động của lambdas Java 8, tôi đã đưa ra lời giải thích một lần trước đây. ) Ngoài ra, bạn có thể xóa dấu ngoặc của vòng lặp như Olivier đã làm và thay vào đó, bạn có thể thay đổi bản in thành System.out.print(" "+i+++i--+i);(thay vào đó là khoảng trắng của một dòng mới và bạn không cần không gian tại c+++c--+c). Hãy thử nó ở đây.
Kevin Cruijssen

1
Cảm ơn @KevinCruijssen về các mẹo cũng như tài liệu java lambdas. Đó là một hướng dẫn rất dễ thực hiện để thực hiện một số lambdas đơn giản. Tôi đã cập nhật cho phù hợp!
DevelopingDeveloper




4

Brainfuck , 41 byte

-[[<+>--->++>>>+<<<<]>+]>>>[<<.+.-.+>.>-]

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


+1 Tôi làm theo hầu hết trong số đó nhưng nó bắt đầu bằng - [Điều đó có nghĩa là bạn đang đặt ô 0 thành -1 trước khi bạn bắt đầu vòng lặp? Bất kỳ cơ hội của một lời giải thích cho một newbie Brainfuck nếu bạn có thời gian? Btw, cảm ơn vì -2 về nỗ lực của tôi.
ElPedro

@ElPedro điều này phụ thuộc vào trình thông dịch brainfuck, trình thông dịch tại tio.run lưu trữ các số 8 bit không dấu trong mỗi ô, vì vậy ô đầu tiên nhận được 255 trước vòng lặp.
trứng

@ElPedro phân đoạn khởi tạo thực sự được tạo bởi BF-Crunch .
trứng

4

Brainfuck , 45 37 byte

+[[<+>>++<-]>]<<---[-----<+.+.-.<.>>]

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

In bằng chữ in hoa, cách nhau bởi khoảng trắng có dấu cách.

Làm thế nào nó hoạt động:

+[[<+>>++<-]>] Intialises the tape with the format n^2
               1 2 4 8 16 32 64 128 0 0'
<<---          Navigates to the desired section and tweaks the counter
               1 2 4 8 16 32 64 125<
[-----<+.+.-.<.>>] Prints the Terza Rima, using:
                 125 as the loop counter (decremented by 5 each loop)
                 64 as the current alphabetic character (incremented and printed each loop)
                 32 as the space character

1
Điều này thực sự rất tốt! Làm tốt lắm!
Bụi




3

Brain-Flak , 180 byte

(()()())(({}){})(({}){})(({}){})(({}){})(({}){}())<>(()()()()())(({}){})(({}){})(()()()()(){}){({}[()])<>(({}))(({}()))(({}[()]))({}()<(()()()()()()()()()())>)<>}<>{}{}{({}<>)<>}<>

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

Cảm ơn DJ đã làm việc này


3

Haskell , 28 byte

[[x,succ x,x]|x<-['A'..'Y']]

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

succ là một lựa chọn đặt tên không may ...

Giải trình

[[x,succ x,x]|x<-['A'..'Y']]

[            |x<-          ]  -- for x in...
                 ['A'..'Y']   -- the alphabet sans Z
 [x,succ x,x]                 -- construct a string of x, the successor of x and x

4
Tôi không cảm thấy hoàn toàn công bằng khi trả về một danh sách các chuỗi thay vì phân tách chúng bằng dấu cách hoặc dòng mới theo yêu cầu.
dùng28667

@ user28667 Nó thường được cho phép trong các thử thách (có lẽ nên có trên bài viết IO mặc định, nếu nó chưa có). OP vẫn chưa có phản ứng cụ thể trong thử thách này. Điều này, tuy nhiên, không có lý do để downvote.
hoàn toàn là

@totallyhuman Hiện tại, thách thức chỉ định rõ ràng rằng nên sử dụng khoảng trắng hoặc dòng mới để phân tách đầu ra, do đó câu trả lời này hiện không hợp lệ. Vì vậy, theo đúng quy tắc của trang web, nó sẽ bị xóa hoặc chỉ sửa bằng cách thêm một unlineshoặc unwords.
Laikoni

@Laikoni Tôi dường như có ninja. Thách thức không từ chối một cách rõ ràng một danh sách các dòng là đầu ra. (Thêm vào đó, điều đó sẽ làm mất hiệu lực một số lượng câu trả lời hợp lý.) Dù bằng cách nào, câu trả lời bây giờ không phảikhông hợp lệ.
hoàn toàn là

3

R , 40 byte

cat(intToUtf8(rbind(x<-65:89,x+1,x,10)))

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

Một thay thế nữa trong câu trả lời của R cho PlannapusGiuseppe . Đăng theo yêu cầu của họ. Giải pháp này sử dụng mã ASCII để mã hóa UTF8.

PS nếu TAB được cho phép, người ta có thể thay thế dòng mới (mã ASCII 10) bằng cách lập bảng (mã ASCII 9) và giải pháp có thể co lại thành 39 byte:

cat(intToUtf8(rbind(x<-65:89,x+1,x,9)))


Tôi nghĩ rằng việc sử dụng 9là hoàn toàn tốt, vì đó là khoảng trắng, được OP cho phép.
Giuseppe


3

PowerShell , 39 37 byte

65..89|%{-join[char[]]($_,++$_,--$_)}

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

Vòng lặp từ 65đến 89. Mỗi lần lặp, chúng tôi đang xây dựng một mảng số nguyên (hiện tại, thêm một và hiện tại) của chữ số hiện tại, sử dụng tăng trước và giảm trước. Sau đó, nó được đúc lại thành một char-array và -joinghép lại thành một chuỗi. Mỗi chuỗi được để lại trên đường ống và một ẩn Write-Outputkhi hoàn thành chương trình cung cấp cho chúng tôi một dòng mới giữa mỗi phần tử miễn phí.


Ngoài ra, cùng một số byte

65..89|%{-join[char[]]($_,($_+1),$_)}

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


1
($_,($_+1),$_)là một tuple có cùng chiều dài thay thế
Veskah 18/07/18



2

Pepe, 59 56 byte

-3 byte nhờ u_nd xác định

REeEeEEeEerEeEeeeeeERrEEEEErEEEeeREEreeerEEEEEeeEreeERee

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

Giải trình:

# Prepare stacks

  # prepare stack R [Z]
  REeEeEEeEe  # push Z

  # prepare stack r [A,B,A]
  rEeEeeeeeE  # push A
  RrEEEEE     # copy and increment A (getting B)
  rEEEee      # duplicate A to end

# Start loop
REE           # create label Z

  reee        # output stack r contents
  rEEEEEeeE   # increment all

  reeE        # end line

Ree           # loop while r[p] != Z

1
Thay thế rEeEeeeeEebằng RrEEEEEtiết kiệm 3 byte
u_nd xác định

@u_nd xác định Cảm ơn! Tôi đã tạo mã này trước khi cờ được thêm vào Pepe. Cập nhật câu trả lời.
RedClover

1

Võng mạc , 24 byte


ABA
;{:G`
T`_p`p`[^Y]..

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


21 byte nhưng bị kéo theo các dòng mới ...
Neil

@Neil Vâng, bạn thậm chí không cần `.... Mặc dù thoát khỏi những dòng mới này thực sự gây phiền nhiễu. Tôi hy vọng sẽ giúp việc in trong các vòng lặp linh hoạt và thuận tiện hơn một chút trong Retina 1.0.
Martin Ender

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.