Hindari pengulangan surat di antara lima program sederhana

12

Tantangan Anda adalah menulis 5 program lengkap yang berbeda untuk 5 tugas berikut:

  1. Mencetak Hello, World!

  2. Diberikan input dengan STDIN, menghasilkan faktorial, Anda dapat mengasumsikan bahwa input adalah bilangan bulat> = 0

  3. Dengan bilangan bulat N, hitung jumlah bilangan prima <= N

  4. Diberikan input dengan STDIN, output huruf yang digunakan dalam input. Misalnya: inputnya Hello world, Anda perlu output helowrd. Perhatikan bahwa output dalam huruf kecil. Anda dapat mengasumsikan bahwa input selalu abjad dengan spasi putih, spasi putih diabaikan.

  5. Keluarkan berlian berikut persis seperti ini:

       *
      ***
     *****
    *******
     *****
      ***
       *
    

Semua tantangan ini mungkin sangat mudah, tetapi ada tangkapan. Setiap huruf yang Anda gunakan tidak dapat digunakan lagi di program lain. Ini tidak dilarang, tetapi akan memberi Anda penalti +8 byte . Misalnya, jika ini adalah program Anda untuk tugas pertama:

print("Hello, World!");

Maka Anda tidak dapat menggunakan surat-surat berikut (dalam huruf besar atau bentuk huruf kecil): p, r, i, n, t, h, e, l, o, w, ddi program lain. Jika Anda harus menggunakannya, Anda dapat 'membeli' setiap huruf untuk 8 byte. Jadi jika Anda ingin menggunakan surat itu llagi di program lain, Anda akan mendapat penalti 8 byte. Setelah Anda membayar penalti, Anda dapat menggunakan setiap huruf sebanyak yang Anda inginkan dalam program ini. Karakter lain tidak penting. Semua 5 program harus dalam bahasa yang sama.

Ini adalah , jadi jumlah byte yang paling sedikit menang!

Adnan
sumber
3
Ini adalah putaran yang sedikit berbeda pada tantangan yang sudah kita miliki, tetapi tidak cukup berbeda untuk itu agar tidak menjadi multi-dupe di mata saya.
Mego
3
@Mego Saya akan memilih untuk menutup ini sebagai multi-duplikat tanpa batasan, tetapi pembatasan membuatnya menjadi permainan yang sama sekali baru.
trichoplax
1
Jika Anda menggunakan huruf yang diberikan dalam 3 program, apakah Anda membayar penalti 8 byte dua kali (16 byte)?
trichoplax
1
@trichoplax, ya Anda membayar 16 byte
Adnan
1
@trichoplax Sulit. Solusi yang ada untuk masalah yang ditipu masih akan kompetitif. Solusi teratas di sini hanya akan menjadi gabungan dari solusi pertanyaan yang ditipu, dengan skor yang lebih tinggi dari penalti.
Mego

Jawaban:

10

CJam, 73 byte

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*

Setiap baris adalah program lengkap. Cobalah secara online: 1 | 2 | 3 | 4 | 5

Peta surat

 bc  f h  k   op    u       18
            m   q            4
        ij       r          17
    e      l      s          7
             n        w y   27

Jika Anda ingin (dan masing-masing program Anda cocok dalam satu baris), Anda dapat menggunakan program CJam ini untuk membuat peta surat untuk kiriman Anda sendiri.

Dennis
sumber
Bukti bahwa osascript tidak dibuat untuk ini: Seluruh kiriman Anda kurang dari 2 program saya. XD +1, pekerjaan bagus.
Addison Crump
4

Pyth, 90 byte

Percobaan pertama...

Tugas 1: 20 byte

+"Hello, "+C87"orld!

Tugas 2, 3 byte

.!Q

Tugas 3, 9 byte

sf}TPTSvz

Tugas 4, 6 + 8 = 14 byte

@G{rw0

Tugas 5, 44 byte

"   *
  ***
 *****
*******
 *****
  ***
   *
lirtosiast
sumber
3

osascript, 759 Bytes

Saya tahu ini akan menjadi banyak ketika saya mulai. oo

Tugas 1: 15 Bytes

"Halo Dunia!"

Saya tahu bahwa itu akan menjadi buruk sejak saat ini.

Tugas 2: 64 + 8 * 4 = 96 Bytes

di jalankan a
setel ke 1
ulangi a
atur o ke * o
atur a-1
akhir
Hai
akhir

Astaga.

Tugas 3: 170 + 8 * 13 = 274 Bytes

di jalankan a
atur o ke 0
set t ke false
ulangi dengan i dari 2 hingga a
set t ke true
ulangi dengan c dari 2 hingga i-1
jika saya mod c = 0 maka set t ke false
akhir
jika t maka atur o ke o + i
akhir
akhir

Dennis g kalah besar.

Tugas 4: 225 + 8 * 13 = 329

di jalankan a
setel ke ""
ulangi dengan i dalam item a
ulangi dengan karakter c in i
jika c tidak dalam o maka
jika jumlah ASCII c <91 maka
set o to o & (karakter ASCII dari (jumlah ASCII c + 32))
lain
atur o ke o & c
akhir
akhir
akhir
akhir
Hai
akhir

...

Tugas 5: 45 Bytes

"*
  ***
 *****
*******
 *****
  ***
   * "

Jadi ya. Saya tahu saya akan kalah sejak awal. Tapi itu menarik, saya tertarik untuk mengetahui apakah ada cara untuk melakukan ini dalam karakter yang lebih sedikit. Peta karakter (seperti yang disediakan oleh Dennis):

   de hlorw 15
a cdef hai lmnop rstu w 160
a de nop rstu 57
abcdef hai lmnop rstu w 214
                            39
                             0

Hitungan karakter di atas sedikit tidak aktif - baris baru membuatnya bermasalah, karena baris baru tidak dihitung.

CATATAN: Alasan untuk tidak menggunakan hal-hal seperti a's charactersatau sejenisnya adalah bahwa 'karakter harus digunakan ketika mengeksekusi dari baris perintah osascript. Jika saya menggunakan ', saya harus menggunakan \'atau sesuatu yang serupa, yang tidak akan membantu saya sama sekali. Juga, itu hanya dikenali "sebagai penangkap string, jadi saya agak kacau di sana juga. Tapi itu menyenangkan.

Addison Crump
sumber
1

NARS2000 APL, 144 byte (85 karakter)

Tugas 1, 21 byte (17 karakter)

⎕←"Hello, World!"

Tugas 2, 10 byte (4 karakter)

⎕←!⎕

Tugas 3, 22 byte (11 karakter)

⎕←+/¯2π⍳2π⎕

Tugas 4, 53 byte (29 karakter)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]

Tugas 5, 38 byte (24 karakter)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]
Oberon
sumber
1
Apakah itu benar-benar program penuh? Saya tidak tahu NARS2000 (dan itu tidak tersedia di platform saya), tetapi semua dialek yang saya tahu perlu ditugaskan untuk mencetak di luar REPL.
Dennis
@ Dennis Maaf, lupa saya mengutak-atik REPL.
Oberon
Anda tidak diizinkan menghasilkan spasi tambahan untuk berlian.
lirtosiast
1

Jelly , 46 byte (tidak bersaing)

“3ḅaė;œ»
Ɠ!
ÆRS
ɠQḲŒl
4Ḷ¤‘+¤ṖṚṭ×”*Fµ4Ḷṭ4ḶṚṖ¤F×⁶+⁸Y

Cobalah online! (Salin / rekatkan setiap cuplikan)

Rupanya, batasannya tidak membatasi bermain golf :) Hanya saran untuk yang terakhir, tentu saja, tolong.

Erik the Outgolfer
sumber