Tránh lặp lại các chữ cái giữa năm chương trình đơn giản


12

Thử thách của bạn là viết 5 chương trình đầy đủ khác nhau cho 5 nhiệm vụ sau:

  1. In Hello, World!

  2. Đưa ra một đầu vào với STDIN, xuất ra giai thừa, bạn có thể giả sử rằng đầu vào là một số nguyên> = 0

  3. Cho một số nguyên N, tính tổng các số nguyên tố <= N

  4. Đưa ra một đầu vào với STDIN, xuất các chữ cái được sử dụng trong đầu vào. Ví dụ: đầu vào là Hello world, bạn cần xuất ra helowrd. Lưu ý rằng đầu ra là chữ thường. Bạn có thể giả sử rằng đầu vào luôn luôn là chữ cái với các khoảng trắng, các khoảng trắng được bỏ qua.

  5. Xuất ra viên kim cương sau đây chính xác như thế này:

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

Tất cả những thử thách này có lẽ rất dễ dàng, nhưng có một nhược điểm. Mỗi chữ cái bạn sử dụng không thể được sử dụng lại trong các chương trình khác. Điều này không bị cấm, nhưng sẽ cho bạn mức phạt +8 byte . Ví dụ: nếu đây là chương trình của bạn cho nhiệm vụ đầu tiên:

print("Hello, World!");

Sau đó, bạn không thể sử dụng các chữ cái sau (trong chữ hoa hoặc hình thức chữ thường): p, r, i, n, t, h, e, l, o, w, dtrong các chương trình khác. Nếu bạn phải sử dụng chúng, bạn có thể 'mua' mỗi chữ cái cho 8 byte. Vì vậy, nếu bạn muốn sử dụng lại chữ cái ltrong một chương trình khác, bạn sẽ bị phạt 8 byte. Sau khi bạn đã trả tiền phạt, bạn có thể sử dụng mỗi chữ cái bao nhiêu tùy ý trong chương trình này. Các nhân vật khác không quan trọng. Ngoài ra, tất cả 5 chương trình nên có cùng ngôn ngữ.

Đây là , nên số byte ít nhất sẽ thắng!


3
Đây là một sự thay đổi hơi khác nhau về những thách thức mà chúng tôi đã có, nhưng không đủ khác biệt để nó không trở thành một kẻ lừa đảo trong mắt tôi.
Mego

3
@Mego Tôi sẽ bỏ phiếu để đóng cái này dưới dạng nhiều bản sao mà không bị hạn chế, nhưng hạn chế này làm cho nó trở thành một trò chơi hoàn toàn mới.
trichoplax

1
Nếu bạn sử dụng một chữ cái đã cho trong 3 chương trình, bạn có phải trả tiền phạt 8 byte hai lần (16 byte) không?
trichoplax

1
@trichoplax, vâng, bạn phải trả 16 byte
Adnan

1
@trichoplax Khó. Các giải pháp hiện có cho các vấn đề bị lừa vẫn sẽ cạnh tranh. Các giải pháp hàng đầu ở đây sẽ chỉ là kết hợp các giải pháp của các câu hỏi bị lừa, với số điểm cao hơn từ hình phạt.
Mego

Câu trả lời:


10

CJam, 73 byte

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

Mỗi dòng là một chương trình đầy đủ. Hãy thử chúng trực tuyến: 1 | 2 | 3 | 4 | 5

Bản đồ thư

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

Nếu bạn muốn (và mỗi chương trình của bạn phù hợp với một dòng), bạn có thể sử dụng chương trình CJam này để tạo bản đồ thư cho bài nộp của riêng bạn.


Bằng chứng là osascript không được xây dựng cho việc này: Toàn bộ bài đăng của bạn dưới 2 chương trình của tôi. XD +1, công việc tốt.
Addison Crump

4

Bình thường, 90 byte

Lần thử đầu tiên ...

Nhiệm vụ 1: 20 byte

+"Hello, "+C87"orld!

Nhiệm vụ 2, 3 byte

.!Q

Nhiệm vụ 3, 9 byte

sf}TPTSvz

Nhiệm vụ 4, 6 + 8 = 14 byte

@G{rw0

Nhiệm vụ 5, 44 byte

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

3

osascript, 759 byte

Tôi biết điều này sẽ rất nhiều khi tôi bắt đầu. oo

Nhiệm vụ 1: 15 byte

"Chào thế giới!"

Tôi biết rằng nó sẽ trở nên tồi tệ từ thời điểm này.

Nhiệm vụ 2: 64 + 8 * 4 = 96 byte

chạy một
đặt o thành 1
lặp lại một
đặt o thành * o
đặt thành 1
kết thúc
o
kết thúc

Ôi trời ơi.

Nhiệm vụ 3: 170 + 8 * 13 = 274 byte

chạy một
đặt o thành 0
đặt t thành sai
lặp lại với tôi từ 2 đến a
đặt t thành đúng
lặp lại với c từ 2 đến i-1
nếu tôi mod c = 0 thì đặt t thành false
kết thúc
nếu t thì đặt o thành o + i
kết thúc
kết thúc

Dennis ≠ hết hồn.

Nhiệm vụ 4: 225 + 8 * 13 = 329

chạy một
đặt o thành ""
lặp lại với tôi trong các mục của một
lặp lại với c trong các ký tự của i
nếu c không ở o thì
nếu số ASCII của c <91 thì
đặt o thành o & (ký tự ASCII của (số ASCII của c + 32))
khác
đặt o thành o & c
kết thúc
kết thúc
kết thúc
kết thúc
o
kết thúc

...

Nhiệm vụ 5: 45 byte

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

Vì vậy, vâng. Tôi biết tôi sẽ thua ngay từ đầu. Nhưng thật thú vị, tôi rất muốn biết liệu có cách nào để làm điều này với ít nhân vật hơn không. Bản đồ nhân vật (do Dennis cung cấp):

   de hlorw 15
một cdef hi lmnop rstu w 160
a de nop rstu 57
abcdef hi lmnop rstu w 214
                            39
                             0

Số lượng ký tự ở trên hơi bị tắt - dòng mới khiến nó có vấn đề, vì dòng mới không được tiết lộ.

LƯU Ý: Lý do không sử dụng những thứ như a's charactershoặc tương tự là 'nhân vật phải được sử dụng khi thực hiện từ dòng lệnh osascript. Nếu tôi đã sử dụng ', tôi sẽ phải sử dụng \'hoặc một cái gì đó tương tự, điều đó sẽ không giúp tôi chút nào. Ngoài ra, nó chỉ nhận ra "là người bắt giữ chuỗi, vì vậy tôi cũng hơi say ở đó. Nhưng đó là niềm vui.


1

NARS2000 APL, 144 byte (85 ký tự)

Nhiệm vụ 1, 21 byte (17 ký tự)

⎕←"Hello, World!"

Nhiệm vụ 2, 10 byte (4 ký tự)

⎕←!⎕

Nhiệm vụ 3, 22 byte (11 ký tự)

⎕←+/¯2π⍳2π⎕

Nhiệm vụ 4, 53 byte (29 ký tự)

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

Nhiệm vụ 5, 38 byte (24 ký tự)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

1
Là những chương trình thực sự đầy đủ? Tôi không biết NARS2000 (và nó không có sẵn trên nền tảng của tôi), nhưng tất cả các phương ngữ tôi biết đều yêu cầu gán để in bên ngoài REPL.
Dennis

@Dennis Xin lỗi, quên tôi đang nghịch trong REPL.
Oberon

Bạn không được phép xuất các dấu cách cho kim cương.
lirtosiast

1

Jelly , 46 byte (không cạnh tranh)

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

Hãy thử trực tuyến! (Sao chép / dán từng đoạn)

Rõ ràng, hạn chế đã không hạn chế chơi golf :) Tất nhiên, chỉ cần đề xuất cho người cuối cùng, xin vui lòng.

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.