Làm một hành lang khẩn cấp


46

Ở một số quốc gia, có những khuyến nghị hoặc luật về cách hình thành hành lang khẩn cấp trên các đường phố có nhiều làn đường cho mỗi hướng. (Sau đây chúng tôi chỉ xem xét các làn đường đi theo hướng chúng tôi đang đi.) Đây là các quy tắc được tổ chức tại Đức:

  • Nếu chỉ có một làn đường, mọi người nên lái xe sang phải để các phương tiện cứu hộ có thể vượt bên trái.
  • Nếu có hai làn trở lên, những chiếc xe bên trái hầu hết sẽ đi bên trái và những người khác nên di chuyển sang bên phải.

Thử thách

Với số lượng N>0làn thông thường, hãy bố trí các làn đường khi hành lang khẩn cấp được hình thành bằng cách sử dụng một chuỗi các N+1ký tự ASCII. Bạn có thể sử dụng bất kỳ hai ký tự từ mã ASCII 33cho đến126 , một để biểu thị hành lang khẩn cấp, và một để biểu thị những chiếc xe. Trailing hoặc hàng đầu không gian, ngắt dòng vv được cho phép.

Ví dụ

Ở đây chúng tôi đang sử dụng Echo hành lang khẩn cấp, và Ccho những chiếc xe hơi.

N  Output
1  EC
2  CEC
3  CECC
4  CECCC
5  CECCCC
6  CECCCCC
   etc

18
Tôi sẽ không rơi vào điều này! Bạn chỉ đang tìm một làn đường của riêng mình để lướt qua con rắn lén lút.
orlp

16
@PmanAce Tôi thực sự không nghĩ flawr cần sự giúp đỡ của chúng tôi cho việc này: P
orlp

8
+1 vì nó thực sự hoạt động ở Đức. Đã ở trong tình hình cuối tuần trước.
ElPedro

10
@ msh210 Tôi nghĩ rằng những hình ảnh trong trang WP của Đức giải thích nó tốt nhất.
flawr

9
Bạn biết đấy, lúc đầu này trông giống như một thách thức to-the-điểm với CE, nhưng có rất nhiều cách tiếp cận thoải mái nhất có thể cho thử thách này! Sử dụng các phép toán cho C=1/ E=2hoặc C=2/ E=3như câu trả lời hàng đầu nào; sử dụng C=0/ E=1với 10^(n-1); sử dụng C=0/ E=.bằng định dạng thập phân 0.0; sử dụng C=1/ E=-bằng cách sử dụng -1; v.v ... Rất nhiều khả năng độc đáo cho một thử thách trông có vẻ rất quan trọng lúc đầu. Quá tệ, tôi chỉ có thể +1 một lần. ;)
Kevin Cruijssen

Câu trả lời:


29

Python 2, 29 26 byte

lambda n:10**n*97/30-1/n*9

Thí dụ:

>>> f(1)
23
>>> f(2)
323
>>> f(3)
3233

bạn cần xuất 21 trong trường hợp n = 1
DanielIndie

1
@DanielIndie :( đã sửa nhưng bây giờ thì xấu xí.
orlp

Vẫn là một giải pháp rất sáng tạo :)
flawr

1
@orlp xin lỗi :) nhưng vẫn là một giải pháp tốt :)
DanielIndie

3
10**n*97/30-1/n*9lưu một byte khác, cho f(5) == 323333v.v.
Lynn

28

Python 3, 35 33 byte

lambda N:'C'*(N>1)+'EC'+'C'*(N-2)

Chỉnh sửa: thả f=để lưu 2 byte, nhờ lời nhắc của @dylnan .

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

Để hình dung nó:

lambda N:'🚘'*(N>1)+'🚔🚘'+'🚘'*(N-2)

Đầu ra:

1 🚔🚘
2 🚘🚔🚘
3 🚘🚔🚘🚘
4 🚘🚔🚘🚘🚘
5 🚘🚔🚘🚘🚘🚘
6 🚘🚔🚘🚘🚘🚘🚘

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

Python 3, 40 byte

Một giải pháp đơn giản:

lambda N:str(10**N).replace('100','010')

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


2
Tôi nghĩ rằng giải pháp 'đơn giản' có khoảng trắng không cần thiết saulambda N:
ai đó

@someone Tôi không biết điều đó, cảm ơn.
Dương Tần


14

Japt, 5 4 byte

Sử dụng qcho xe hơi và +cho hành lang.

ç¬iÄ

Thử nó

Tín dụng cho Oliver, người đã chơi golf 4 byte cùng lúc với tôi.


Giải trình

Một giải pháp ngắn nhưng một lời giải thích khó khăn!

Công cụ đơn giản trước tiên: çPhương thức, khi được áp dụng cho một số nguyên, lặp lại đối số chuỗi của nó với số lần đó. Các iphương pháp có 2 đối số ( s& n) và chèn svào chỉ sốn của chuỗi nó được áp dụng.

Việc mở rộng 2 phím tắt unicode được sử dụng mang lại cho chúng ta çq i+1, khi được phiên mã sang JS trở thành U.ç("q").i("+",1), Uđầu vào ở đâu. Vì vậy, chúng tôi lặp lại q Uthời gian và sau đó chèn một+ chỉ mục 1.

Bí quyết cuối cùng là, nhờ gói chỉ mục của Japt, khi nào U=1, isẽ chèn +chỉ mục 0, bất kể giá trị nào bạn cung cấp cho nó n.


Tôi sẽ đăng ç0 iQ16 byte, nhưng sẽ tốt hơn nếu bạn sử dụng nó.
Oliver

Cảm ơn, @Oliver. Mặc dù vậy, nó đã giảm xuống còn 5 byte.
Shaggy

1
ç¬iÅcho 4 byte;) Tôi chưa bao giờ lạm dụng Japt nhiều như vậy.
Oliver

Tôi chỉ định làm điều tương tự với Äthay vì Å:)
Shaggy

7

R, 50 byte

-11 cảm ơn Giuseppe!

pryr::f(cat("if"(x<2,12,c(21,rep(2,x-1))),sep=""))

Đầu ra 1 cho hành lang khẩn cấp và 2 cho làn đường bình thường

Cố gắng của tôi, 61 byte

Không có gì lạ mắt để xem ở đây, nhưng hãy để R trên bảng điểm =)

q=pryr::f(`if`(x<2,cat("EC"),cat("CE",rep("C",x-1),sep="")))

Sử dụng:

q(5)
CECCCC

Lưu 8 byte sử dụng 21 = 12 + 9 và buộc TRUE / FALSE đến 1/0 mà không có một nếu tio.run/##K/r/v6CossjKKk0jObFEw1JLI8/...
JayCe


6

Python 2, 30 29 28 byte

lambda n:`10/3.`[1/n:n-~1/n]

In 3thay vì C.thay vì E.

Giải trình:

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

lambda n:    # Method with integer parameter and string return-type
  `10/3.`    #  Calculate 10/3 as decimal (3.333333333) and convert it to a string
  [1/n       #   Take the substring from index 1 if `n=1`, 0 otherwise
   ,n-~      #   to index `n+1` +
       1/n]  #    1 if `n=1`, 0 otherwise

Python 2, 33 32 31 29 28 byte

lambda n:1%n-1or'1-'+'1'*~-n

In 1thay vì C-thay vì E.

-2 byte nhờ @ovs .
-1 byte nhờ @xnor .

Giải trình:

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

lambda n:    # Method with integer parameter and string return-type
  1%n-1      #  If `n` is 1: Return '-1'
  or         #  Else:
    '1-'+    #   Return '1-', appended with:
    '1'*~-n  #   `n-1` amount of '1's

1
Bạn 10/3thất bại ở 17
Jo King

1
@JoKing Tôi chỉ cần làm rõ với OP và anh ấy nói " Sử dụng loại số nguyên tích hợp là đủ. ", Điều đó có nghĩa là n=16nếu số nguyên tích hợp của bạn là 64 bit là đủ hoặc trong trường hợp này n=16khi giá trị thập phân có thể ' Theo mặc định, giữ hơn 15 chữ số thập phân là đủ. (Áp dụng tương tự cho rất nhiều câu trả lời khác sử dụng các ngôn ngữ có kích thước số tùy ý, như Java, C # .NET, v.v.)
Kevin Cruijssen

5

Bình thường, 10 9 8 byte

Xn1Q*NQZ

Sử dụng 0để biểu thị hành lang khẩn cấp và ".
Hãy thử nó ở đây

Giải trình

Xn1Q*NQZ
    *NQ     Make a string of <input> "s.
 n1Q         At index 0 or 1...
X      Z    ... Insert 0.

5

cân não , 42 byte

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

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

Lấy đầu vào là mã char và đầu ra là Vlàn bình thường vàW là làn đường bị xóa. (Để kiểm tra dễ dàng, tôi khuyên bạn nên thay thế ,bằng một số +s)

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

,[[>]+[<]>-] Turn input into a unary sequence of 1s on the tape
>>[<]<[<]    Move two cells left of the tape if input is larger than 1
             Otherwise move only one space
>+>+<        Add one to the two cells right of the pointer
             This transforms:
               N=1:  0 0' 1 0  -> 0 2' 1 0
               N>1:  0' 0 1 1* -> 0 1' 2 1*
[<-[--->+<]>.,>]  Add 86 to each cell to transform to Ws and Vs and print

5

Octave (MATLAB *), 31 30 28 27 22 byte

@(n)'CE'(1+(n>1==0:n))

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

Chương trình hoạt động như sau:

@(n)                   %Anonymous function to take input
            n>1==0:n   %Creates [1 0] if n is 1, or [0 1 (0 ...)] otherwise
         1+(        )  %Converts array of 0's and 1's to 1-indexed
    'CE'(            ) %Converts to ASCII by addressing in string

Thủ thuật được sử dụng ở đây là KHAI THÁC mảng hạt giống 0:nvới một kiểm tra nếu đầu vào lớn hơn 1. Kết quả là đối n>1với hạt giống được chuyển đổi thành một mảng logic [0 1 (0 ...)]trong khin==1 hạt giống bị đảo ngược [1 0], đạt được sự đảo ngược cần thiết.

Phần còn lại chỉ là chuyển đổi hạt giống thành một chuỗi với những chiếc xe được nối thêm.


(*) Liên kết TIO bao gồm trong phần chân trang nhận xét một giải pháp thay thế cho cùng số byte hoạt động trong MATLAB cũng như Octave, nhưng nó dẫn đến một chuỗi '0' và '1' thay vì 'E' và ' C '. Để hoàn thiện, thay thế là:

@(n)['' 48+(n>1==0:n)]

  • Đã lưu 1 byte bằng cách sử dụng n==1~=0:1chứ không phải 0:1~=(n<2). ~=đã được ưu tiên hơn <, do đó là dấu ngoặc gốc, nhưng dường như ~===được xử lý theo thứ tự xuất hiện để bằng cách so sánh với 1, chúng ta có thể lưu một byte.

  • Đã lưu 2 byte bằng cách thay đổi nơi 2:nthực hiện phủ định . Điều này tiết kiệm một cặp dấu ngoặc. Chúng tôi cũng phải thay đổi ~=để tính ==đến thực tế là nó sẽ bị phủ nhận sau này.

  • Đã lưu 1 byte bằng cách sử dụng <lại. Hóa ra <có cùng một ưu tiên như ==sau tất cả. Đặt <phép tính trước khi ==đảm bảo đúng thứ tự thực hiện.

  • Đã lưu 5 byte bằng cách không tạo hai mảng riêng biệt. Thay vào đó dựa vào thực tế là so sánh XNOR sẽ chuyển đổi một phạm vi duy nhất thành logic.


Rất thông minh :-)
Stewie Griffin

@StewieGriffin Cảm ơn :). Quản lý để loại bỏ thêm 5 byte nữa.
Tom Carpenter



4

Python 3, 32 byte

lambda n:f"{'CE'[n<2:]:C<{n+1}}"

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

Sử dụng biểu thức chuỗi f để định dạng 'E'hoặc được 'CE'đệm ở bên phải 'C'để nó có chiều rộng n+1.

f"{          :       }    a Python 3 f-string expression.
   'CE'[n<2:]             string slice based on value of n.
             :            what to format is before the ':' the format is after.
              C           padding character
               <          left align
                {n+1}     minimum field width based on n

4

Brain-Flak , 100 66 byte

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

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

Sử dụng "như làn đường khẩn cấp và !làn đường bình thường.


+1 để sử dụng ngôn ngữ này của tất cả mọi thứ. XD
Alex

2
@Alex, Chà, Brain-Flak là ngôn ngữ của tháng 4
Jo King

Nghiêm túc hay trò đùa Cá tháng Tư? Trường hợp ngôn ngữ của tháng được bầu?
Alex

@Alex Đề cử và bỏ phiếu ở đây , và sau đó một bài đăng cụ thể theo tháng được thực hiện như bài này
Kamil Drakari

Ồ, đó là trên nền tảng này. Tôi hiểu rồi, cảm ơn! :-)
Alex


4

05AB1E , 7 byte

Î>∍1I≠ǝ

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

0 là C và 1 là E.

Giải trình

Î>          # Push 0 and input incremented            -- [0, 4]
  ∍         # Extend a to length b                    -- [0000]
   1I≠      # Push 1 and input falsified (input != 1) -- [0000, 1, 1] 
      ǝ     # Insert b in a at location C             -- [0100]
            # Implicit display

Ôi con cáo ranh mãnh. $<×TìsiRlà cách tôi đã suy nghĩ.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn Đó là một cách tiếp cận thú vị! Tôi cũng nán lại việc xây dựng "nếu" nhưng nó cần ít nhất 3 byte, do đó cần một cách tiếp cận khác :-)
Kaldo

Trong phiên bản mới của 05AB1E, 1Icó thể được chơi gôn $.
Kevin Cruijssen

5 byte (cũng hoạt động trong phiên bản cũ).
Kevin Cruijssen

4

APL (Dyalog Unicode) , 21 17 16 byte

(-≠∘1)⌽'E',⍴∘'C'

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

Cảm ơn Erik vì đã lưu 4 byte và Adám để có thêm một byte.

Làm sao?

(-≠∘1)⌽'E',⍴∘'C'  Tacit function
           ⍴∘'C'  Repeat 'C', according to the input
       'E',       Then append to 'E'
                 And rotate
    1)            1
  ≠∘              Different from the input? Returns 1 or 0
(-                And negate. This rotates 0 times if the input is 1, and once if not.

1
(⍵>1)không cần phải ở trong ngoặc đơn. Và bạn có thể lưu 4 byte với hàm ngầm : (⊢×1<⊢)⌽'E',⍴∘'C'.
Erik the Outgolfer

@EriktheOutgolfer cảm ơn! Tôi đã không có thời gian để ngầm hiểu sau khi đăng bởi vì tôi có một lớp học ngày hôm nay. Tôi sẽ chỉnh sửa khi tôi về nhà.
J. Sallé


15 byte với ⎕io = 0:'CE'[1(≠=∘⍳+)⎕]
ngn

@ngn Tôi thậm chí không thể ... bạn có thể cho tôi liên kết TIO với các trường hợp thử nghiệm không? Dường như không thể làm cho nó hoạt động ...
J. Sallé

4

Haskell , 35 33 32 byte

2 byte được lưu nhờ Angs, 1 byte được lưu nhờ Lynn

(!!)$"":"EC":iterate(++"C")"CEC"

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

Haskell , 32 30 29 byte

Đây là số 0 được lập chỉ mục vì vậy nó không tuân thủ thách thức

g=(!!)$"EC":iterate(++"C")"CEC"

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

Haskell , 30 byte

Điều này không hoạt động vì đầu ra cần phải là một chuỗi

f 1=21
f 2=121
f n=10*f(n-1)+1

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

Ở đây chúng tôi sử dụng số thay vì dây, 2cho hành lang khẩn cấp, 1cho xe ô tô. Chúng ta có thể thêm một 1kết thúc bằng cách nhân với 10 và thêm1 . Điều này rẻ hơn bởi vì chúng tôi không phải trả tiền cho tất cả các byte cho phép nối và chuỗi ký tự.

Nó sẽ rẻ hơn để sử dụng 0thay vì 1nhưng chúng ta cần các số không hàng đầu, cuối cùng bị cắt bớt.


((blah)!!)có thể trở thành (!!)$blahđể lưu một byte trong hai câu trả lời đầu tiên của bạn.
Lynn

@Lynn Cảm ơn! Tôi đã cố gắng làm điều đó sớm hơn nhưng tôi phải đếm sai các byte.
Thuật sĩ lúa mì

4

Python 3 , 30 29 byte

lambda n:"CEC"[~n:]+"C"*(n-2)

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

OK, đã có rất nhiều câu trả lời Python, nhưng tôi nghĩ rằng đây là phụ 30 đầu tiên trong số những người vẫn sử dụng ký tự "E" và "C" thay vì số.




3

Stax , 7 byte

ü♣àj#F 

Chạy và gỡ lỗi nó

Cái này sử dụng các ký tự "0" và "1". Điều này hoạt động vì khi bạn xoay một mảng có kích thước 1, nó sẽ không thay đổi.

Giải nén, không được chỉnh sửa và nhận xét, nó trông như thế này.

1]( left justify [1] with zeroes. e.g. [1, 0, 0, 0]
|)  rotate array right one place
0+  append a zero
$   convert to string

Chạy cái này




3

Thạch , 6 byte

⁵*ṾṙỊṙ

Hiển thị làn đường ô tô là 0 , làn khẩn cấp là 1 .

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

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

⁵*ṾṙỊṙ  Main link. Argument: n

⁵*      Compute 10**n.
  Ṿ     Uneval; get a string representation.
   ṙỊ   Rotate the string (n≤1) characters to the left.
     ṙ  Rotate the result n characters to the left.

3

Khoảng trắng , 141 104 103 byte

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_number][T    T   T   _Retrieve][S S S T  S N
_Push_2][T  S S T   _Subtract][S N
S _Duplicate_input-2][N
T   T   N
_If_negative_Jump_to_Label_-1][S S S T  N
_Push_1][S N
S _Duplicate_1][T   N
S T _Print_as_integer][S S T    T   N
_Push_-1][T N
S T _Print_as_integer][T    S S T   _Subtract][N
S S T   N
_Create_Label_LOOP][S N
S _Duplicate][N
T   T   S N
_If_negative_Jump_to_EXIT][S S S T  N
_Push_1][S N
S _Duplicate_1][T   N
S T _Print_as_integer][T    S S T   _Subtract][N
S N
T   N
_Jump_to_LOOP][N
S S N
_Create_Label_-1][T N
S T _Print_as_integer][N
S S S N
_Create_Label_EXIT]

Chữ cái S(dấu cách), T(tab) và N(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]chỉ thêm vào giải thích.

In 1thay vì C-thay vìE.

-1 byte nhờ @JoKing bằng cách đề xuất sử dụng 1-1thay vì 01.

Giải thích bằng mã giả:

Integer i = STDIN-input as integer - 2
If i is negative (-1):
  Print i (so print "-1")
Else:
  Print "1-1"
  Start LOOP:
    If i is negative:
      EXIT program
    Print "1"
    i = i-1
    Go to the next iteration of the LOOP

Ví dụ chạy:

Đầu vào: 1

Command   Explanation                 Stack      Heap    STDIN   STDOUT   STDERR

SSSN      Push 0                      [0]
SNS       Duplicate top (0)           [0,0]
TNTT      Read STDIN as integer       [0]        {0:1}   1
TTT       Retrieve heap at 0          [1]        {0:1}
SSSTSN    Push 2                      [1,2]      {0:1}
TSST      Subtract top two            [-1]       {0:1}
SNS       Duplicate input-2           [-1,-1]    {0:1}
NTSN      If neg.: Jump to Label_-1   [-1]       {0:1}
NSSN      Create Label_-1             [-1]       {0:1}
TNST      Print top as integer        []         {0:1}           -1
NSSSN     Create Label_EXIT           []         {0:1}
                                                                         error

Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).
Dừng với lỗi: Thoát không được xác định.

Đầu vào: 4

Command   Explanation                   Stack      Heap    STDIN   STDOUT   STDERR

SSSN      Push 0                        [0]
SNS       Duplicate top (0)             [0,0]
TNTT      Read STDIN as integer         [0]        {0:4}   4
TTT       Retrieve heap at 0            [4]        {0:4}
SSSTSN    Push 2                        [4,2]      {0:4}
TSST      Subtract top two              [2]        {0:4}
SNS       Duplicate input-2             [2,2]      {0:4}
NTSN      If neg.: Jump to Label_-1     [2]        {0:4}
SSSTN     Push 1                        [2,1]      {0:4}
SNS       Duplicate top (1)             [2,1,1]    {0:4}
TNST      Print as integer              [2,1]      {0:4}           1
SSTTN     Push -1                       [2,1,-1]   {0:4}
TNST      Print as integer              [2,1]      {0:4}           -1
TSST      Subtract top two              [1]        {0:4}
NSSTN     Create Label_LOOP             [1]        {0:4}
 SNS      Duplicate top (1)             [1,1]      {0:4}
 NTTSN    If neg.: Jump to Label_EXIT   [1]        {0:4}
 SSSTN    Push 1                        [1,1]      {0:4}
 SNS      Duplicate top (1)             [1,1,1]    {0:4}
 TNST     Print as integer              [1,1]      {0:4}           1
 TSST     Subtract top two              [0]        {0:4}
 NSNTN    Jump to Label_LOOP            [0]        {0:4}

 SNS      Duplicate top (0)             [0,0]      {0:4}
 NTTSN    If neg.: Jump to Label_EXIT   [0]        {0:4}
 SSSTN    Push 1                        [0,1]      {0:4}
 SNS      Duplicate top (1)             [0,1,1]    {0:4}
 TNST     Print as integer              [0,1]      {0:4}           1
 TSST     Subtract top two              [-1]       {0:4}
 NSNTN    Jump to Label_LOOP            [-1]       {0:4}

 SNS      Duplicate top (-1)            [-1,-1]    {0:4}
 NTTSN    If neg.: Jump to Label_EXIT   [-1]       {0:4}
NSSSN     Create Label_EXIT             [-1]       {0:4}
                                                                            error

Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).
Dừng với lỗi: Thoát không được xác định.


Sẽ dễ dàng hơn để in làn đường rõ ràng như -bằng cách lạm dụng in ấn -1?
Jo King

@JoKing Thật không may, nó sẽ dài hơn. Hãy thử trực tuyến 112 byte. Nó thực sự đã thay đổi push_0; print_as_integer; push_1; print_as_integerđể push_-1; print_as_integer, nhưng đổi lại hai push_0; print_as_integerđược thay thế bằng push_45; print_as_character, trong đó push_0= SSSN, và push_45= SSSTSTTSTN. Và một bổ sung push_45cũng phải được thêm vào, bởi vì đối với đầu vào n=1bây giờ tôi đã in bản sao 0mà tôi đã có trên ngăn xếp, vì vậy tôi không phải đẩy 0lại vì 0đã có trên ngăn xếp.
Kevin Cruijssen

Tôi có nghĩa -là thay thế 11thay thế 0. Sau đó, bạn sẽ tránh phải đẩy 45, và theo như tôi có thể nói điều này sẽ tiết kiệm khi in một số trong nửa đầu của điều kiện, nhưng tăng nhẹ chi phí khi đẩy 1 thay vì 0. Kiểm tra câu trả lời Gol> <> của tôi cho một ví dụ về đầu ra mà tôi muốn nói
Jo King

1
@JoKing Tôi đã thử triển khai nó, nhưng cuối cùng tôi đã đạt 107 byte (đây là cùng một mã với phần tô sáng và giải thích thêm ). Nó thực sự tiết kiệm print_-1thay vì in 01, nhưng một bổ sung print_-1là cần thiết bên ngoài vòng lặp. EDIT: Có thể giảm nó xuống 103 byte bằng cách thay đổi subtract_1; if_0_jump_to_ONE; push_-1; print_integerđể subtract_2; if_negative_jump_to_ONE; print_integer, bởi vì -1 đã có trên ngăn xếp rồi. Vì vậy, cảm ơn cho -1 byte. :)
Kevin Cruijssen

3

AutoHotkey 32 byte

Thay thế chữ "C" bằng "EC" trừ khi số lượng C> 1, sau đó nó sẽ gửi "CEC" và thoát khỏi ứng dụng.

::C::EC
:*:CC::CEC^c
^c::ExitApp

C => EC
CC => CEC sau đó thoát khỏi chương trình. Bất kỳ Cs nào nữa sẽ được nhập sau khi chương trình thoát.


3

APL + THẮNG, 20 16 byte

4 byte được lưu nhờ Adám

Lời nhắc cho số nguyên n:

(-2≠⍴n)⌽n←1⎕/⍕10

1 cho hành lang khẩn cấp o cho xe ô tô.


16:(-2≠⍴n)⌽n←1⎕/⍕10
Adám

@ Adám Cảm ơn. Tôi thấy thủ thuật của ngn, 1⎕ /, sẽ có ích. Một cho danh sách thành ngữ?
Graham

Danh sách thành ngữ nào bạn đang nói về?
Adám

@ Adám Hai danh sách thành ngữ tôi sử dụng thường xuyên nhất là Finnapl và APL2idioms
Graham

Tôi không chắc những gì thành ngữ ở đây. Nó chỉ là golf. Dù sao, danh sách thành ngữ của tôi có thể bạn quan tâm.
Adám


3

MathGolf , 7 6 byte

ú░\┴╜╪

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

Đầu ra 1cho E0cho C.

Giải trình:

ú         # 10 to the power of the (implicit) input
          #  i.e. 1 → 10
          #  i.e. 4 → 10000
         # Convert it to a string
          #  i.e. 10 → "10"
          #  i.e. 10000 → "10000"
  \       # Swap so the (implicit) input is at the top of the stack again
   ┴╜     # If the input is NOT 1:
         #  Rotate the string once towards the right
          #   i.e. "10000" and 4 → "01000"
          # Output everything on the stack (which only contains the string) implicitly
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.