Buat Koridor Darurat

46

Di beberapa negara ada rekomendasi atau undang-undang tentang cara membuat koridor darurat di jalan-jalan yang memiliki banyak jalur per arah. (Berikut ini kami hanya mempertimbangkan jalur yang menuju ke arah perjalanan kami.) Berikut adalah aturan yang berlaku di Jerman:

  • Jika hanya ada satu jalur, semua orang harus berkendara ke kanan sehingga kendaraan penyelamat bisa lewat di sebelah kiri.
  • Jika ada dua lajur atau lebih, mobil-mobil di lajur paling kiri harus melaju ke kiri, dan semua orang harus pindah ke kanan.

Tantangan

Mengingat jumlah N>0lajur reguler, output tata letak lajur ketika koridor darurat dibentuk menggunakan serangkaian N+1karakter ASCII. Anda dapat menggunakan dua karakter dari kode ASCII 33hingga 126, satu untuk menunjukkan koridor darurat, dan satu untuk menunjukkan mobil. Trailing atau spasi terdepan, line break dll diperbolehkan.

Contohnya

Di sini kita gunakan Euntuk koridor darurat, dan Cuntuk mobil.

N  Output
1  EC
2  CEC
3  CECC
4  CECCC
5  CECCCC
6  CECCCCC
   etc
cacat
sumber
18
Saya tidak akan jatuh cinta dengan ini! Anda hanya mencari jalur sendiri untuk meluncur melalui ular licik Anda.
orlp
16
@PmanAce Saya benar-benar tidak berpikir flawr membutuhkan bantuan kami untuk ini: P
orlp
8
+1 karena sebenarnya berfungsi di Jerman. Apakah dalam situasi akhir pekan lalu.
ElPedro
10
@ msh210 Saya pikir gambar-gambar di halaman WP Jerman menjelaskan yang terbaik.
flawr
9
Anda tahu, pada awalnya ini tampak seperti tantangan to-the-point dengan Cdan E, tetapi ada begitu banyak pendekatan yang bagus untuk tantangan ini! Menggunakan operasi matematika untuk C=1/ E=2atau C=2/ E=3seperti jawaban atas tidak; menggunakan C=0/ E=1dengan 10^(n-1); menggunakan C=0/ E=.dengan format desimal 0.0; menggunakan C=1/ E=-dengan memanfaatkan -1; dll. Begitu banyak kemungkinan unik untuk tantangan yang tampak begitu-to-the-point pada awalnya. Sayang sekali saya hanya bisa memberi +1 satu kali. ;)
Kevin Cruijssen

Jawaban:

29

Python 2, 29 26 byte

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

Contoh:

>>> f(1)
23
>>> f(2)
323
>>> f(3)
3233
orlp
sumber
Anda perlu menampilkan 21 dalam kasus n = 1
DanielIndie
1
@DanielIndie :( diperbaiki tapi sekarang jelek.
orlp
Masih solusi yang sangat kreatif :)
flawr
1
@ orlp maaf :) tapi masih solusi yang bagus :)
DanielIndie
3
10**n*97/30-1/n*9menyimpan byte lain, memberi f(5) == 323333dll.
Lynn
28

Python 3, 35 33 byte

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

Sunting: menjatuhkan f=untuk menyimpan 2 byte, berkat pengingat @dylnan .

Cobalah online!

Untuk memvisualisasikannya:

lambda N:'🚘'*(N>1)+'πŸš”πŸš˜'+'🚘'*(N-2)

Keluaran:

1 πŸš”πŸš˜
2 πŸš˜πŸš”πŸš˜
3 πŸš˜πŸš”πŸš˜πŸš˜
4 πŸš˜πŸš”πŸš˜πŸš˜πŸš˜
5 πŸš˜πŸš”πŸš˜πŸš˜πŸš˜πŸš˜
6 πŸš˜πŸš”πŸš˜πŸš˜πŸš˜πŸš˜πŸš˜

Coba πŸš” online!

Python 3, 40 byte

Solusi mudah:

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

Cobalah online!

Guoyang Qin
sumber
2
Saya pikir solusi 'langsung' memiliki spasi yang tidak perlu setelahlambda N:
seseorang
@ Seseorang saya tidak menyadarinya, terima kasih.
Guoyang Qin
26

C (gcc) , 32 byte

f(n){printf(".%.*f"+1%n,n-1,0);}

Cobalah online!

Penggunaan 0dan .karakter:

.0
0.0
0.00
0.000
0.0000
nwellnhof
sumber
14

Japt, 5 4 byte

Penggunaan quntuk mobil dan +untuk koridor.

ç¬iΓ„

Cobalah

Penghargaan untuk Oliver yang bermain golf 4 byte pada saat yang sama dengan saya.


Penjelasan

Solusi singkat tapi penjelasan rumit!

Hal langsung pertama: Γ§Metode, ketika diterapkan ke integer, mengulangi argumen stringnya beberapa kali. The iMetode mengambil 2 argumen ( s& n) dan sisipan sdi index ndari string itu diterapkan.

Memperluas 2 cara pintas unicode yang digunakan memberi kita Γ§q i+1, yang, ketika diubah menjadi JS U.Γ§("q").i("+",1), di mana Uinputnya. Jadi kita mengulangi q Ukali dan kemudian memasukkan +pada indeks 1

Trik terakhirnya adalah, berkat pembungkus indeks Japt, kapan U=1, iakan memasukkan +indeks at 0, berapa pun nilai yang Anda berikan n.

Shaggy
sumber
Saya akan memposting Γ§0 iQ16 byte, tetapi akan lebih baik jika Anda menggunakannya.
Oliver
Terima kasih, @Oliver. Sementara itu, turun menjadi 5 byte.
Shaggy
1
ç¬iΓ…untuk 4 byte;) Saya tidak pernah menyalahgunakan Japt sebanyak ini.
Oliver
Saya baru saja akan melakukan hal yang sama dengan Γ„bukannya Γ…:)
Shaggy
7

R, 50 byte

-11 terima kasih kepada Giuseppe!

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

Output 1 untuk koridor darurat dan 2 untuk jalur normal

Usaha saya, 61 byte

Tidak ada yang mewah untuk dilihat di sini, tapi mari kita dapatkan R di papan skor =)

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

Pemakaian:

q(5)
CECCCC
Pun intended
sumber
Hemat 8 byte menggunakan 21 = 12 + 9 dan memaksa BENAR / SALAH ke 1/0 tanpa ifo.run/##K/r/v6CossjKKk0jObFEw1JLI8/…
JayCe
6

Python 2, 30 29 28 byte

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

Cetak 3bukan Cdan .bukannya E.

Penjelasan:

Cobalah online.

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

Mencetak 1bukannya Cdan -bukannya E.

-2 byte terima kasih kepada @ovs .
-1 byte terima kasih kepada @xnor .

Penjelasan:

Cobalah online.

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
Kevin Cruijssen
sumber
1
Yang Anda 10/3gagal pada 17
Jo King
1
@JoKing Aku hanya diklarifikasi dengan OP, dan dia berkata " Menggunakan built in tipe integer cukup. ", Yang berarti hingga n=16jika bilangan bulat Anda built-in adalah 64-bit sudah cukup, atau dalam hal ini n=16ketika nilai desimal dapat' t menahan lebih dari 15 digit desimal secara default sudah cukup. (Hal yang sama berlaku untuk banyak jawaban lain menggunakan bahasa dengan ukuran angka acak, seperti Java, C # .NET, dll.)
Kevin Cruijssen
5

Pyth, 10 9 8 byte

Xn1Q*NQZ

Penggunaan 0untuk menunjukkan koridor darurat dan ".
Coba di sini

Penjelasan

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

brainfuck , 42 byte

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

Cobalah online!

Mengambil input sebagai kode char dan output sebagai Vjalur normal dan jalur Wbersih. (Untuk menguji dengan mudah, saya sarankan mengganti ,dengan sejumlah +s)

Bagaimana itu bekerja:

,[[>]+[<]>-] 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
Jo King
sumber
5

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

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

Cobalah online!

Program ini bekerja sebagai berikut:

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

Trik yang digunakan di sini adalah XNORing array benih 0:ndengan cek jika input lebih besar dari 1. Hasilnya adalah bahwa untuk n>1benih akan dikonversi ke array logis [0 1 (0 ...)]sedangkan untuk n==1benih menjadi terbalik [1 0], mencapai inversi yang diperlukan.

Sisanya hanya mengubah benih menjadi string dengan mobil terlampir yang cukup.


(*) TIO link termasuk dalam komentar footer solusi alternatif untuk jumlah byte yang sama yang bekerja di MATLAB serta Oktaf, tetapi menghasilkan urutan '0' dan '1' daripada 'E' dan ' C '. Untuk kelengkapan, alternatifnya adalah:

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

  • Disimpan 1 byte dengan menggunakan n==1~=0:1daripada 0:1~=(n<2). ~=telah didahulukan <, maka tanda kurung asli, tetapi tampaknya itu ~=dan ==ditangani dalam urutan tampilan sehingga dengan membandingkan dengan 1 kita dapat menghemat satu byte.

  • Disimpan 2 byte dengan mengubah tempat negasi 2:ndilakukan. Ini menghemat sepasang tanda kurung. Kita juga harus mengubah ~=to ==ke menjelaskan fakta bahwa itu akan dinegasikan nanti.

  • Disimpan 1 byte menggunakan <lagi. Ternyata yang <memiliki prioritas sama seperti ==setelah semua. Menempatkan <perhitungan sebelum ==urutan eksekusi yang benar.

  • Disimpan 5 byte dengan tidak membuat dua array terpisah. Alih-alih mengandalkan fakta bahwa perbandingan XNOR akan mengubah rentang tunggal menjadi logika.

Tom Carpenter
sumber
Sangat pintar :-)
Stewie Griffin
@StewieGriffin Terima kasih :). Berhasil menjatuhkan 5 byte lagi.
Tom Carpenter
4

Jelly , 11 9 byte

’0ẋ⁾0E;αΉ™α»Š

Cobalah online!

Program lengkap.

Gunakan 0bukan C.

Erik the Outgolfer
sumber
4

C (gcc), 39 byte

f(n){printf("70%o"+!n,7|(1<<3*--n)-1);}

Cobalah online!

Meminjam dan mengadaptasi trik printf dari jawaban ErikF .

kwc
sumber
2
Selamat datang di situs dan posting pertama yang bagus!
caird coinheringaahing
4

Python 3, 32 byte

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

Cobalah online!

Menggunakan ekspresi f-string untuk memformat baik 'E'atau 'CE'empuk di sebelah kanan dengan 'C'sehingga memiliki lebar 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
RootTwo
sumber
4

Brain-Flak , 100 66 byte

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

Cobalah online!

Digunakan "sebagai jalur darurat dan !jalur normal.

Jo King
sumber
+1 untuk menggunakan bahasa ini dari semua hal. XD
Alex
2
@Alex, Nah, Brain-Flak adalah bahasa bulan April
Jo King
Serius atau lelucon April Mop? Di mana bahasa bulan ini dipilih?
Alex
@Alex Nominasi dan pemungutan suara di sini , dan kemudian dibuat pos khusus sebulan seperti ini
Kamil Drakari
Oh, ada di platform ini. Begitu ya, terima kasih! :-)
Alex
4

05AB1E , 7 byte

Î>∍1I≠ǝ

Cobalah online!

0 adalah C dan 1 adalah E.

Penjelasan

Î>          # 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
Kaldo
sumber
Oh kamu licik rubah. $<×TìsiRadalah bagaimana saya berpikir.
Magic Octopus Urn
@MagicOctopusUrn Itu pendekatan yang menarik! Saya berlama-lama di atas konstruksi "jika" juga tetapi membutuhkan setidaknya 3 byte, maka kebutuhan untuk pendekatan yang berbeda :-)
Kaldo
Di versi baru 05AB1E, 1Ibisa di- golf $.
Kevin Cruijssen
5 byte (juga berfungsi dalam versi lawas).
Kevin Cruijssen
4

APL (Dyalog Unicode) , 21 17 16 byte

(-β‰ βˆ˜1)⌽'E',⍴∘'C'

Cobalah online!

Terima kasih kepada Erik karena telah menghemat 4 byte dan AdΓ‘m untuk satu byte lebih lanjut.

Bagaimana?

(-β‰ βˆ˜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.
J. SallΓ©
sumber
1
(⍡>1)tidak harus dalam tanda kurung. Dan Anda dapat menyimpan 4 byte dengan fungsi diam-diam: (βŠ’Γ—1<⊒)⌽'E',⍴∘'C'.
Erik the Outgolfer
@EriktheOutgolfer terima kasih! Saya tidak punya waktu untuk diam-diam setelah memposting karena saya ada kelas hari ini. Saya akan mengedit ketika saya pulang.
J. SallΓ©
15 byte dengan βŽ•io = 0:'CE'[1(β‰ =∘⍳+)βŽ•]
ngn
@ ngn Saya bahkan tidak bisa ... bisakah Anda mendapatkan saya tautan TIO dengan kotak uji? Tampaknya tidak bisa membuatnya bekerja ...
J. SallΓ©
4

Haskell , 35 33 32 byte

2 byte disimpan berkat Angs, 1 byte disimpan berkat Lynn

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

Cobalah online!

Haskell , 32 30 29 byte

Ini nol diindeks sehingga tidak sesuai dengan tantangan

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

Cobalah online!

Haskell , 30 byte

Ini tidak berfungsi karena output harus berupa string

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

Cobalah online!

Di sini kita menggunakan angka sebagai ganti string, 2untuk koridor darurat, 1untuk mobil. Kita dapat menambahkan 1sampai akhir dengan mengalikannya dengan 10 dan menambahkan 1. Ini lebih murah karena kita tidak perlu membayar semua byte untuk penggabungan dan string literal.

Akan lebih murah untuk digunakan 0daripada 1tetapi kita perlu memimpin nol, yang akhirnya dipangkas.

Wisaya Gandum
sumber
((blah)!!)dapat menjadi (!!)$blahmenyimpan byte dalam dua jawaban pertama Anda.
Lynn
@ Lynn, terima kasih! Saya mencoba melakukan itu sebelumnya tetapi saya pasti salah menghitung byte.
Wheat Wizard
4

Python 3 , 30 29 byte

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

Cobalah online!

OK, sudah ada banyak jawaban Python, tapi saya pikir ini adalah byter sub-30 pertama di antara mereka yang masih menggunakan karakter "E" dan "C" daripada angka.

Kirill L.
sumber
3

Stax , 7 byte

ü♣àj#F 

Jalankan dan debug itu

Ini menggunakan karakter "0" dan "1". Ini berfungsi karena ketika Anda memutar array ukuran 1, itu tidak berubah.

Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.

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

Jalankan yang ini

rekursif
sumber
3

Perl 5 -p , 27 20 19 byte

$_=1x$_;s/1?\K1/E1/

Cobalah online!

Menyimpan byte dengan menggunakan 1untuk mobil dan Euntuk koridor darurat.

Xcali
sumber
3

Jelly , 6 byte

⁡*αΉΎαΉ™α»ŠαΉ™

Menampilkan jalur mobil sebagai 0 , jalur darurat sebagai 1 .

Cobalah online!

Bagaimana itu bekerja

⁡*αΉΎαΉ™α»ŠαΉ™  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.
Dennis
sumber
3

Spasi , 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]

Huruf S(spasi), T(tab), dan N(baris baru) ditambahkan hanya sebagai penyorotan.
[..._some_action]ditambahkan sebagai penjelasan saja.

Mencetak 1bukannya Cdan -bukannya E.

-1 byte terima kasih kepada @ JoKing dengan menyarankan penggunaan 1dan -1bukan 0dan 1.

Penjelasan dalam pseudo-code:

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

Contoh berjalan:

Memasukkan: 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

Cobalah online (dengan spasi, tab, dan baris baru saja).
Berhenti dengan kesalahan: Keluar tidak ditentukan.

Memasukkan: 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

Cobalah online (dengan spasi, tab, dan baris baru saja).
Berhenti dengan kesalahan: Keluar tidak ditentukan.

Kevin Cruijssen
sumber
Apakah akan lebih mudah untuk mencetak jalur yang jelas -dengan menyalahgunakan pencetakan -1?
Jo King
@ JoKing Sayangnya itu akan lebih lama. Cobalah secara online 112 byte. Itu memang berubah push_0; print_as_integer; push_1; print_as_integeruntuk push_-1; print_as_integer, tetapi sebagai gantinya keduanya push_0; print_as_integerdiganti dengan push_45; print_as_character, di mana push_0= SSSN, dan push_45= SSSTSTTSTN. Dan tambahan push_45harus ditambahkan juga, karena untuk input n=1saya sekarang mencetak duplikat yang 0sudah saya miliki di stack, jadi saya tidak perlu mendorong 0lagi karena 0sudah di stack.
Kevin Cruijssen
Maksud saya -menggantikan 1dan 1mengganti 0. Maka Anda akan menghindari keharusan menekan 45, dan sejauh yang saya tahu ini akan menghemat mencetak nomor di paruh pertama dari kondisi, tetapi sedikit meningkatkan biaya mendorong 1 bukannya 0. Periksa Gol saya > <> jawab untuk contoh dari output yang saya maksud
Jo King
1
@JoKing Saya sudah mencoba mengimplementasikannya, tetapi saya berakhir pada 107 byte (ini adalah kode yang sama dengan penambahan highlight dan penjelasan ). Memang menghemat print_-1bukan cetak 0dan 1, tetapi tambahan print_-1diperlukan di luar loop. EDIT: Telah mampu menguranginya menjadi 103 byte dengan mengubah subtract_1; if_0_jump_to_ONE; push_-1; print_integeruntuk subtract_2; if_negative_jump_to_ONE; print_integer, karena -1 sudah ada di tumpukan itu. Jadi terima kasih untuk -1 byte. :)
Kevin Cruijssen
3

AutoHotkey 32 byte

Mengganti huruf "C" dengan "EC" kecuali jumlah C> 1, lalu mengirim "CEC" dan keluar dari aplikasi.

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

C => EC
CC => CEC kemudian keluar dari program. Cs lebih lanjut akan dimasukkan setelah program keluar.

nelsontruran
sumber
3

APL + WIN, 20 16 byte

4 byte disimpan berkat AdΓ‘m

Anjuran untuk bilangan bulat n:

(-2≠⍴n)⌽n←1βŽ•/⍕10

1 untuk koridor darurat o untuk mobil.

Graham
sumber
16:(-2≠⍴n)⌽n←1βŽ•/⍕10
AdΓ‘m
@ Adam Terima kasih. Saya melihat trik ngn, 1βŽ• / ⍕, berguna. Satu untuk daftar idiom?
Graham
Apa daftar idiom yang kamu bicarakan?
AdΓ‘m
@ AdΓ‘m Dua daftar idiom yang paling sering saya gunakan adalah Finnapl dan APL2idioms
Graham
Saya tidak yakin apa yang idiomatis di sini. Itu hanya golf. Bagaimanapun, daftar idiom saya mungkin menarik bagi Anda.
Adm
3

MathGolf , 7 6 byte

ΓΊβ–‘\β”΄β•œβ•ͺ

Cobalah online.

Output 1untuk Edan 0untuk C.

Penjelasan:

ΓΊ         # 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
Kevin Cruijssen
sumber