Tes Multiplisitas

21

Gunakan bahasa pemrograman apa pun untuk menampilkan angka antara 1 dan 99 (termasuk keduanya) sedemikian rupa, sehingga:

  • jumlahnya dipisahkan oleh ruang tunggal,
  • jika angka dapat dibagi 3, itu harus dalam tanda kurung,
  • jika angka dapat dibagi 4, itu harus dalam tanda kurung,
  • jika angka dapat dibagi dengan 3 dan 4, itu harus dalam kurung dan kurung kotak (dengan kurung kotak lebih dekat ke nomor).

Program Anda harus menampilkan dengan tepat:

1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] (45) 46 47 ([48]) 49 50 (51) [52] 53 (54) 55 [56] (57) 58 59 ([60]) 61 62 (63) [64] 65 (66) 67 [68] (69) 70 71 ([72]) 73 74 (75) [76] 77 (78) 79 [80] (81) 82 83 ([84]) 85 86 (87) [88] 89 (90) 91 [92] (93) 94 95 ([96]) 97 98 (99)
Monolica
sumber
6
Terkait
ETHproduk
3
Bisakah kita mengeluarkan setiap entri pada baris baru, atau haruskah semua output berada pada satu baris?
ETHproduk
4
Bisakah keluaran berakhir dengan spasi. Beberapa jawaban tampaknya berasumsi demikian.
Dennis

Jawaban:

7

05AB1E , 23 byte

-1 byte terima kasih kepada Kevin Cruijssen

тGND4Öi…[ÿ]}N3Öi…(ÿ)]ðý

Cobalah online!

Okx
sumber
1
-1 byte dengan mengubah }?ð?menjadi ]ðý(tutup if dan loop, dan gabungkan seluruh stack dengan spasi)
Kevin Cruijssen
@KevinCruijssen Terima kasih, itulah yang saya cari!
Okx
6

Python 2 , 68 65 60 byte

i=0
exec"i+=1;print'('[i%3:]+`[i][i%4:]or i`+')'[i%3:],;"*99

Cobalah online!

ovs
sumber
1
Saya benar :) +1
ElPedro
5

R , 61 byte

"+"=c
r=""+""
cat(paste0(r+"(",r+""+"[",1:99,r+""+"]",r+")"))

Cobalah online!

J.Apakah
sumber
2
alias brilian!
Giuseppe
Bagaimana cara kerjanya? Itu luar biasa! +1 untuk Anda teman saya
Sumner18
4

Jelly , 21 20 byte

³Ṗµ3,4ṚƬḍד([“])”j)K

Cobalah online!

Bagaimana itu bekerja

³Ṗµ3,4ṚƬḍד([“])”j)K  Main link. No arguments.

³                     Set the return value to 100.
 Ṗ                    Pop; yield [1, ..., 99].
  µ               )   Map the chain in between over [1, ..., 9]; for each integer k:
   3,4                    Set the return value to [3, 4].
      ṚƬ                  Reverse until a loop is reached. Yields [[3, 4], [4, 3]].
        ḍ                 Test k for divisibility by [[3, 4], [4, 3]], yielding a
                          matrix of Booleans.
         ד([“])”         Repeat the characters of [['(', '['], [']', ')']] as many
                          times as the Booleans indicate.
                 j        Join the resulting pair of strings, separated by k.
                   K  Join the resulting array of strings, separated by spaces.
Dennis
sumber
3

D , 110 byte

import std.stdio;void f(){for(int i;i<99;)write(++i%3?"":"(",i%4?"":"[",i,i%4?"":"]",i%3?"":")",i%99?" ":"");}

Cobalah online!

Porting dari jawaban C ++ @ HatsuPointerKun.

Zacharý
sumber
3

Arang , 30 byte

⪫EEE⁹⁹I⊕ι⎇﹪⊕κ⁴ι⪫[]ι⎇﹪⊕κ³ι⪫()ι 

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

    ⁹⁹                          Literal 99
   E                            Map over implicit range
        ι                       Current value
       ⊕                        Incrementd
      I                         Cast to string
  E                             Map over list of strings
            κ                   Current index
           ⊕                    Incremented
             ⁴                  Literal 4
          ﹪                     Modulo
              ι                 Current value
                []              Literal string `[]`
                  ι             Current value
               ⪫                Join i.e wrap value in `[]`
         ⎇                      Ternary
 E                              Map over list of strings
                      κ         Current index
                     ⊕          Incremented
                       ³        Literal 3
                    ﹪           Modulo
                        ι       Current value
                          ()    Literal string `()`
                            ι   Current value
                         ⪫      Join i.e wrap value in `()`
                   ⎇            Ternary
                                Literal space
⪫                               Join list
                                Implicitly print
Neil
sumber
3

J , 54 53 byte

1 byte lebih sedikit berkat @Jonah

(*stdout(3|.0=4 3 1 3 4&|,1=":)#3|.']) ([',":)@>i.100

Cobalah online!

FrownyFrog
sumber
Terima kasih sudah melakukan ini. Juga, mengapa Anda harus melakukannya di stdoutsini ... Saya belum pernah melihat itu sebelumnya. @FrownyFrog
Jonah
@Jonah Saya tidak bisa menampilkannya sebagai string lengkap, itu akan memotong (...) stdout tidak melakukan itu, dan tidak mencetak baris baru juga, jadi saya juga dapat mencetak setiap nomor secara terpisah. Untuk beberapa alasan meskipun itu membuat spasi tambahan muncul (ada 4, dan hanya 1 yang sengaja ada di sana)
FrownyFrog
Pendekatan ini sangat pintar, baik rotasi dan pilihan untuk digunakan #. Saya telah memperkenalkan tambahan kata kerja untuk surround dengan ()dan []: g=. {.@[ , ":@] , {:@[. ugh verboseness!
Jonah
satu pertanyaan lagi: alasan apa pun yang Anda gunakan LFalih-alih _. yang terakhir tampaknya bekerja juga.
Jonah
3

C, C ++, 136 133 131 129 128 124 byte

-5 byte terima kasih kepada Zacharý dan terinspirasi oleh fungsi write () dalam bahasa D (lihat jawaban Zacharý)

-2 byte terima kasih kepada mriklojn

-12 byte untuk versi C berkat mriklojn

-4 bytes berkat ceilingcat

#include<cstdio>
void f(){for(int i=0;i++<99;)printf("(%s%d%s%s%s"+!!(i%3),i%4?"":"[",i,i%4?"":"]",i%3?"":")",i%99?" ":"");}

C Pengoptimalan Khusus: 115 byte

#include<stdio.h>
i;f(){for(;i++<99;)printf("(%s%d%s%s%s"+!!(i%3),i%4?"":"[",i,i%4?"":"]",i%3?"":")",i%99?" ":"");}
HatsuPointerKun
sumber
Apakah MSVC membiarkan Anda melakukan inf f()hal itu? Maaf tentang menghapus komentar saya, pikir saya memiliki sesuatu yang lebih pendek (saya tidak)
Zacharý
@ Zacharý Tidak, saya pikir fungsinya terlalu sederhana dan menghasilkan "f harus mengembalikan int". BTW, solusi Anda adalah 3 byte lebih pendek (termasuk kompresi dipasangkan dengan memindahkan kenaikan i)
HatsuPointerKun
1
Dang, sama sekali lupa tentang printfsesuatu. Tidak bisakah kamu menggunakan C stdio kalau begitu?
Zacharý
2
Hal lain yang dapat Anda gunakan / eksploitasi adalah kenyataan bahwa, setidaknya dengan gcc 5.3.1, Anda tidak perlu #include, dan Anda juga dapat menghapus tipe pengembalian fungsi. Selain itu, jika Anda mendeklarasikan int ifungsi di luar (dalam lingkup global) maka nilainya default ke 0 dan tipe data default ke int. Ini akan menghasilkan loop Anda mulai dari 0, dan untuk memperbaikinya Anda bisa memindahkan kenaikan ke ekspresi kondisi di loop Anda, membuatnya terlihat sepertii;f(){for(;++i<=99;)
mriklojn
1
Sarankan ")\0"+i%3alih-alih i%3?"":")". Juga, saya pikir Anda perlu menambahkan i=0di awal loop.
ceilingcat
3

Powershell, 60 byte

"$(1..99|%{($_,"($_)","[$_]","([$_])")[!($_%3)+2*!($_%4)]})"

Penjelasan:

  • array dengan 4 elemen: $_, "($_)", "[$_]", "([$_])"
  • dan indeks: [!($_%3)+2*!($_%4)]
  • ulangi untuk setiap nomor
  • ubah hasilnya menjadi string

Skrip Tes yang kurang golf:

$f = {

$r = 1..99|%{
    ($_, "($_)", "[$_]", "([$_])") [!($_%3)+2*!($_%4)]
}
"$($r)"

}

$expected = '1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] (45) 46 47 ([48]) 49 50 (51) [52] 53 (54) 55 [56] (57) 58 59 ([60]) 61 62 (63) [64] 65 (66) 67 [68] (69) 70 71 ([72]) 73 74 (75) [76] 77 (78) 79 [80] (81) 82 83 ([84]) 85 86 (87) [88] 89 (90) 91 [92] (93) 94 95 ([96]) 97 98 (99)'
$result = &$f
$result-eq$expected
$result

Keluaran:

True
1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] (45) 46 47 ([48]) 49 50 (51) [52] 53 (54) 55 [56] (57) 58 59 ([60]) 61 62 (63) [64] 65 (66) 67 [68] (69) 70 71 ([72]) 73 74 (75) [76] 77 (78) 79 [80] (81) 82 83 ([84]) 85 86 (87) [88] 89 (90) 91 [92] (93) 94 95 ([96]) 97 98 (99)
mazzy
sumber
3

MathGolf , 41 40 34 29 byte

♀({îû)(î+╫îa_'(\')ßyΓî34α÷ä§ 

CATATAN: Ini memiliki ruang tambahan

Hanya jawaban MathGolf kedua saya ..
-5 byte berkat @ JoKing .

Cobalah online.

Penjelasan:

♀(             # Push 99 (100 decreased by 1)
  {            # Start a loop, which implicitly loops down to (and excluding) 0
   û)(         #  Push string ")("
      î+       #  Append the 1-indexed index
              #  Rotate the string once towards the right
   îa          #  Push the 1-indexed index of the loop, wrap in a list
   _           #  Duplicate it
    '(        '#  Push string "("
      \        #  Swap the top two items of the stack
       ')     '#  Push string ")"
         ßy    #  Wrap all three into a list, and join them
   Γ           #  Wrap all four into a list
               #  (We now have a list [N, "(N)", "[N]", "([N])"], where N is the index)
   î           #  Push the 1-indexed index of the loop
    34         #  Push 3 and 4 to the stack
      α        #  Wrap all three into a list
       ÷       #  Check for each if the index is divisible by it
               #  (resulting in either [0,0], [0,1], [1,0], or [1,1]
        ä      #  Convert from binary to integer
               #  (resulting in either 0, 1, 2, or 3
         §     #  Push the string at that index from the array
               #  Push a space
               # (After the loop, output the entire stack joined together implicitly)
Kevin Cruijssen
sumber
@JoKing, terima kasih! Tidak tahu itu qbisa dihilangkan dan itu dilakukan secara implisit dalam loop. Juga, tidak tahu ada builtin 2/3/4-string. Sayang sekali trik rotate tidak bekerja dengan array yang dibungkus.
Kevin Cruijssen
Yah, itu lebih karena saya telah memperdagangkan output eksplisit setiap iterasi untuk output implisit pada akhir program sebagai gantinya
Jo King
@ JoKing Ya, tapi saya tidak tahu itu akan menampilkan seluruh tumpukan bergabung, bukan hanya bagian atas. :)
Kevin Cruijssen
Solusi saya mendekati 40 byte, meskipun saya salah membaca dan berpikir bahwa kurung keriting harus digunakan daripada kurung. Kerja bagus di solusinya!
Maks.
2

Haskell , 77 byte

unwords[f"()"3$f"[]"4$show n|n<-[1..99],let f(x:r)m s|mod n m<1=x:s++r|1<3=s]

Cobalah online!

Saya ingin tahu apakah show[n]dapat digunakan untuk mempersingkat segalanya, sejauh ini tidak berhasil .

Laikoni
sumber
2

Lua, 161 123 byte

b=""for i=1,99 do;c,d=i%3==0,i%4==0;b=b..(c and"("or"")..(d and"["or"")..i..(d and"]"or"")..(c and")"or"").." "end;print(b)

Cobalah online!

Tidak Disatukan:

b = ""
for i = 1, 99 do
    c = 1 % 3 == 0
    d = 1 % 4 == 0
    a = ""
    if c then
        a = a .. "("
    end
    if d then
        a = a .. "["
    end
    a = a .. i
    if d then
        a = a .. "]"
    end
    if c then
        a = a .. ")"
    end
    b = b .. a .. " "
end
print(b)
David Wheatley
sumber
2

Python 2 , 105 97 88 86 85 84 byte

x=1
while x<100:print((('%s','(%s)')[x%3<1],'[%s]')[x%4<1],'([%s])')[x%12<1]%x,;x+=1

Cobalah online!

ElPedro
sumber
2

C (gcc) , 84 byte

main(i){while(99/i++)printf("%s%s%d%s%s ","("+i%3,"["+i%4,i-1,"]"+i%4,")"+i%3);}

Ada byte nol di awal setiap "string braket".

Cobalah online!

Dennis
sumber
Dan di "(" + i% 3 bagaimana Anda tahu alamat untuk i = 2 menunjuk ke nilai nol char? Sama untuk "[" + i% 4 untuk i di {2,3}?
RosLuP
Ini bekerja dengan gcc, yang cukup baik, karena PPCG mendefinisikan bahasa berdasarkan implementasinya.
Dennis
Saya pikir Anda tidak bisa mengatakan kode itu ok dikompilasi dalam setiap implementasi gcc compiler, mungkin hanya yang berjalan di komputer Anda (tapi mungkin juga tidak)
RosLuP
@RosLuP gcc melakukan pekerjaan dengan cara yang sama pada kebanyakan komputer meskipun, setidaknya pada apa pun dengan arsitektur yang sama
ASCII-satunya
@ ASCII-hanya mungkin jika dikompilasi dioptimalkan untuk ruang atau untuk kecepatan hasilnya berbeda ... Saya tidak tahu apakah itu di luar standar ...
RosLuP
2

PowerShell , 67 62 byte

"$(1..99|%{'('*!($x=$_%3)+'['*!($y=$_%4)+$_+']'*!$y+')'*!$x})"

Cobalah online!

Pada dasarnya sebuah FizzBuzz menggunakan perkalian string kali variabel Boolean (secara implisit dilemparkan ke 1 atau 0). String-string itu ditinggalkan di jalur pipa dan dikumpulkan di dalam blok skrip di dalam tanda kutip. Karena default $OutputFieldSeparatoruntuk array adalah spasi, ini secara implisit memberi kita elemen array yang dibatasi ruang.

AdmBorkBork
sumber
2

C #, 124 117 123 byte

-5 byte terima kasih kepada Kevin Cruijssen

x=>{for(int i=0;i++<99;)System.Console.Write((i%3<1?"(":"")+(i%4<1?"[":"")+i+(i%4<1?"]":"")+(i%3<1?")":"")+(i>98?"":" "));}

Uji dengan:

Action<int> t = x=>{for(int i=0;i++<99;)System.Console.Write((i%3<1?"(":"")+(i%4<1?"[":"")+i+(i%4<1?"]":"")+(i%3<1?")":"")+(i>98?"":" "));}
t.Invoke(0);
Console.ReadKey();
HatsuPointerKun
sumber
Ke dalam perebutan C #, begitu. Apakah C # memungkinkan bilangan bulat sebagai argumen kiri ke operator ternary, atau harus boolean?
Zacharý
Saya tidak tahu banyak tentang C #, tetapi bisakah Anda menggunakan xalih-alih i, sehingga tidak perlu khawatir tentang C # int ? (Anda masih harus mengaturnya, tentu saja).
Zacharý
@ Zacharý Tidak, ini menghasilkan kesalahan CS0029 "Tidak dapat mengkonversi int secara implisit menjadi boolean". Dan ya, saya bisa menggunakan idan fakta bahwa saya dapat menginisialisasi pada 0 ketika saya Invoke. Tapi bukankah itu berarti saya harus memasukkan deklarasi t ( Action<int>) dan panggilan ( t.Invoke(0)) dalam bytecount?
HatsuPointerKun
Saya bertanya apakah sesuatu seperti x=>{for(x=0;x++<99;)Console.Write((x%3==0?"(":"")+(x%4==0?"[":"")+x+(x%4==0?"]":"")+(x%3==0?")":"")+(x%99==0?"":" "));};akan berhasil.
Zacharý
1
Kelima ==0bisa <1.
Kevin Cruijssen
2

Merah , 99 97 byte

repeat n 99[a: b: c: d:""if n% 3 = 0[a:"("c:")"]if n% 4 = 0[b:"["d:"]"]prin rejoin[a b n d c" "]]

Cobalah online!

Galen Ivanov
sumber
2

Ruby , 72 66 byte

p [*1..99].map{|x|a=x
a="[#{x}]"if x%4<1
a="(#{a})"if x%3<1
a}*' '

Terima kasih kepada @ jonathan-frech dan @ conor-obrien untuk pemangkasan tambahan.

Will Cross
sumber
Halo dan selamat datang di PPCG! 70 byte .
Jonathan Frech
Selamat datang di PPCG! Berikut ini 4 byte dari saran @JonathanFrench, untuk 66 byte , karena a.join buntuk array adan string bsetara dengana*b
Conor O'Brien
2

PowerShell, 98 82 74 67 63 62 byte

-31 byte berkat @Veskah -5 byte berkat @ ASCII saja

(1..99|%{(($a=($_,"[$_]")[!($_%4)]),"($a)")[!($_%3)]})-join' '

Cobalah online!

Saya masih tidak yakin apa yang telah saya lakukan di sini.

Gabriel Mills
sumber
Hanya beberapa golf cepat untuk 70 byte . Anda tidak harus menggunakan $ a sebagai string dan "$a"masih akan mengganti nilainya. (Catatan: Kutipan tunggal tidak menggantikan $foo, hanya tanda kutip ganda). Trik lain adalah seandainya hanya peduli 0 atau 1 sehingga Anda dapat menggunakan logika boolean untuk menyimpan byte
Veskah
67 byte jika Anda menggunakan pengindeksan daftar juga.
Veskah
juga 67
ASCII
63?
ASCII
62?
ASCII
1

perl -E, 60 byte

$,=$";say map$_%12?$_%3?$_%4?$_:"[$_]":"($_)":"([$_])",1..99

Beberapa byte dapat disimpan jika kita dapat menggunakan baris baru di antara angka-angka: dalam hal ini, kita dapat menghapus $,=$";, mengubah mapke dalam forloop, sambil memindahkan sayke dalam loop.


sumber
1
Apakah Anda yang Abigail? Penemu /^1$|^(11+?)\1+$/?
msh210
1
Wow. Sungguh suatu kehormatan memiliki Anda di sini!
msh210
1

Perl 6 , 51 48 byte

put {$_%3??$^a!!"($a)"}(++$_%4??$_!!"[$_]")xx 99

Cobalah online!

nwellnhof
sumber
Saya akan menyalahgunakan perbedaan antara daftar dan representasi array, seperti ini , tapi saya tidak yakin bagaimana cara menyingkirkan kurung terlampir di seluruh daftar ...
Jo King
@JoKing saya juga memikirkan hal itu, tetapi saya hanya membuat 51-byter ini .
nwellnhof
1

Batch, 145 byte

@set s=
@for /l %%i in (1,1,99)do @set/an=%%i,b=n%%4,p=n%%3&call:c
@echo%s%
:c
@if %b%==0 set n=[%n%]
@if %p%==0 set n=(%n%)
@set s=%s% %n%

Kode jatuh ke dalam subrutin tetapi string sudah dicetak pada titik ini sehingga kode dieksekusi tanpa berbahaya.

Neil
sumber
1

Bersihkan , 100 byte

import StdEnv,Text

join" "[if(n/3*3<n)m("("+m+")")\\n<-[1..99],m<-[if(n/4*4<n)(""<+n)("["<+n<+"]")]]

Cobalah online!

Suram
sumber
1

sfk , 225 byte

for n from 1 to 99 +calc -var #(n)/3+1/3 -dig=0 +calc -var #text*3-#(n) +setvar t +calc -var #(n)/4 -dig=0 +calc -var #text*4-#(n) +xed -var _0_#(t)\[#(n)\]_ _*_#(t)#(n)_ +xed _0*_([part2])_ _?*_[part2]_ +xed "_\n_ _" +endfor

Cobalah online!

Suram
sumber
1

Bash, 61 byte

-14 byte, terima kasih kepada Dennis

seq 99|awk '{ORS=" ";x=$1%4?$1:"["$1"]";print$1%3?x:"("x")"}'

penjelasan

Cukup mudah:

  • seq menghasilkan 1..99
  • kita pipa itu ke awkdengan pemisah catatan keluaran ( ORS) diatur ke ruang sehingga output adalah satu baris.
  • tubuh awk utama hanya menambahkan "[]" ketika angka dapat dibagi dengan 4, dan kemudian menambahkan, di atas itu, "()" ketika dibagi dengan 3.

Cobalah online!

Yunus
sumber
1

JavaScript (Node.js) , 57 byte

f=(n=99)=>n&&f(n-1)+(s=n%4?n:`[${n}]`,n%3?s:`(${s})`)+' '

Cobalah online!

Berubah ke komunitas karena pengoptimalan terlalu mengandalkannya

l4m2
sumber
Anda dapat mempersingkat secara signifikan dengan melakukan${n%4?n:`[${n}]`}
ETHproduksi
66 byte (dengan saran ETH)
Alion
59 byte
Arnauld
57 byte
Neil
1

PHP, 65 byte

while($i++<99)echo$i%4?$i%3?$i:"($i)":($i%3?"[$i]":"([$i])")," ";

atau

while($i++<99)echo"("[$i%3],"["[$i%4],$i,"]"[$i%4],")"[$i%3]," ";

(membutuhkan PHP 5.5 atau yang lebih baru)

Jalankan dengan -nratau coba online .

Titus
sumber
1

Python 2 , 78 byte

i=0
exec"i+=1;u=i%3/-2*(i%4/-3-1);print'([%0d])'[u:7-u:1+(i%3<1<=i%4)]%i,;"*99

Cobalah online!

Saya membayangkan pendekatan keren ini mengiris '([%0d])'tetapi saya tidak bisa mendapatkan ekspresi yang lebih pendek.

Lynn
sumber
1

Java 8, 92 91 byte

-1 byte terima kasih kepada @Dana

i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}

Cobalah online!

Solusi alternatif, 82 byte (dengan ruang tambahan di keluaran - tidak yakin apakah itu diizinkan):

i->{for(;i++<99;)out.printf((i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)+" ",i);}

Penjelasan:

for(;i++<99;)- a for loop yang berjalan dari nilai i(digunakan kembali sebagai input, diambil menjadi 0 dalam kasus ini) menjadi 99

out.printf(<part1>+<part2>,i); - memformat string sebelum segera mencetaknya ke stdout dengan nilai i

di mana <part1>adalah (i>1?" ":"")- mencetak ruang sebelum mencetak angka kecuali nomor itu adalah 1, dalam hal ini menghilangkan spasi

dan <part2>adalah (i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)- jika ihabis dibagi oleh kedua 3 dan 4, imemiliki kedua persegi dan kurung bulat di sekitarnya; lain jika idapat dibagi 3, imemiliki kurung bundar; lain jika ihabis dibagi 4, imemiliki tanda kurung siku; lain, itidak punya tanda kurung.

NotBaal
sumber
Hemat satu byte dengan memindahkan ruang ke awal setiap iterasi loop(i>1:" ":"")
dana
Itu hanya akan berfungsi jika saya mencetak hasilnya secara terbalik (lihat ini ) tetapi sebenarnya akan menghemat 2 byte, bukan 1.
NotBaal
Sayangnya itu tidak sama dengan output yang diharapkan sesuai pertanyaan, tetapi terima kasih atas sarannya!
NotBaal
1
Tautan "coba online" tampaknya rusak. Saya sedang berpikir i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}?
dana
1
Ohhhh kamu benar itu berhasil! Terima kasih untuk itu!
NotBaal