Избегайте повторения букв между пятью простыми программами


12

Ваша задача - написать 5 разных полных программ для 5 следующих задач:

  1. Распечатать Hello, World!

  2. Учитывая вход с STDIN, выведите факториал, вы можете предположить, что вход является целым числом> = 0

  3. Дано целое число N, вычислить сумму простых чисел <= N

  4. Учитывая ввод с помощью STDIN, выведите буквы, использованные при вводе. Например: вход есть Hello world, вам нужно вывести helowrd. Обратите внимание, что вывод в нижнем регистре. Вы можете предположить, что ввод всегда алфавитный с пробелами, пробелы игнорируются.

  5. Выведите следующий бриллиант в точности так:

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

Все эти проблемы, вероятно, очень просты, но есть одна загвоздка. Каждую букву, которую вы используете, нельзя использовать снова в других программах. Это не запрещено, но даст вам штраф +8 байт . Например, если это ваша программа для первого задания:

print("Hello, World!");

Тогда вы не можете использовать следующие буквы (в верхнем или нижнем регистре форме): p, r, i, n, t, h, e, l, o, w, dв других программах. Если вам нужно их использовать, вы можете «купить» каждую букву за 8 байтов. Так что если вы хотите снова использовать букву lв другой программе, вы получите штраф в 8 байт. После того, как вы заплатили штраф, вы можете использовать каждую букву столько, сколько хотите в этой программе. Другие персонажи не имеют значения. Также все 5 программ должны быть на одном языке.

Это , поэтому выигрывает наименьшее количество байтов!


3
Это немного другое вращение на вызовах, которые у нас уже были, но не настолько, чтобы это не было обманом в моих глазах.
Мего

3
@Mego Я бы проголосовал за то, чтобы закрыть это как мульти-дубликат без ограничений, но ограничение делает его совершенно новой игрой.
Трихоплакс

1
Если вы используете данное письмо в 3 программах, платите ли вы 8-байтовый штраф дважды (16 байт)?
Трихоплакс

1
@trichoplax, да, вы платите 16 байт
Аднан,

1
@ trichoplax Вряд ли. Существующие решения для дублированных проблем по-прежнему будут конкурентоспособными. Лучшие решения здесь будут просто объединением решений дублированных вопросов, с более высокой оценкой от штрафа.
Мего

Ответы:


10

CJam, 73 байта

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

Каждая строка - это полная программа. Попробуйте их онлайн: 1 | 2 | 3 | 4 | 5

Письменная карта

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

Если вы хотите (и каждая из ваших программ помещается в одну линию), вы можете использовать эту программу CJam для создания буквенной карты для вашего собственного представления.


Доказательство того, что osascript не был создан для этого: вся ваша заявка составляет менее 2 моих программ. XD +1, хорошая работа.
Эддисон Крамп

4

Pyth, 90 байт

Первая попытка...

Задача 1: 20 байт

+"Hello, "+C87"orld!

Задача 2, 3 байта

.!Q

Задача 3, 9 байт

sf}TPTSvz

Задача 4, 6 + 8 = 14 байт

@G{rw0

Задача 5, 44 байта

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

3

osascript, 759 байт

Я знал, что это будет много, когда я начал. оо

Задача 1: 15 байт

"Привет, мир!"

Я знал, что с этого момента все будет плохо.

Задача 2: 64 + 8 * 4 = 96 байт

на бегу
установить на 1
повторить
установить o в * o
установить в-1
конец
о
конец

О боже

Задача 3: 170 + 8 * 13 = 274 байта

на бегу
установить 0
установить т в ложь
повторить с I от 2 до
установите значение true
повторите с c от 2 до i-1
если i mod c = 0, тогда установите t в false
конец
если t, то установите o в o + i
конец
конец

Деннис ≠ переиграл.

Задача 4: 225 + 8 * 13 = 329

на бегу
установить "в"
повторить с I в пунктах
повторить с с в символах я
если с не в о, то
если ASCII число с <91, то
установите o в o & (ASCII-символ (ASCII-число от c + 32))
еще
установить o в o & c
конец
конец
конец
конец
о
конец

...

Задача 5: 45 байт

"*
  ***
 *****
*******
 *****
  ***
   *»

Так что да. Я знал, что проиграю с самого начала. Но это было интересно, мне было бы интересно узнать, есть ли способ сделать это с меньшим количеством символов. Карта персонажей (предоставленная Денисом):

   De Hlorw 15
КДЕФ привет ИМНОП РСТУ В 160
де ноп рсту 57
abcdef hi lmnop rstu w 214
                            39
                             0

Количество символов, приведенное выше, немного отличается - новые строки сделали его проблемным, так как новые строки были не учтены.

ПРИМЕЧАНИЕ. Причина, по которой вы не используете такие вещи a's charactersили тому подобное, заключается в том, что этот 'символ необходимо использовать при выполнении из командной строки osascript. Если бы я использовал ', я бы использовал \'или что-то подобное, что не помогло бы мне вообще. Кроме того, он распознает только "как струнные захватчики, так что я тоже был там вроде как. Но это было весело.


1

NARS2000 APL, 144 байта (85 символов)

Задача 1, 21 байт (17 символов)

⎕←"Hello, World!"

Задача 2, 10 байт (4 символа)

⎕←!⎕

Задача 3, 22 байта (11 символов)

⎕←+/¯2π⍳2π⎕

Задача 4, 53 байта (29 символов)

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

Задача 5, 38 байт (24 символа)

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

1
Это действительно полные программы? Я не знаю NARS2000 (и он не доступен на моей платформе), но все известные мне диалекты требуют назначения для печати вне REPL.
Деннис

@ Денис Извините, забыл, что я возился в REPL.
Оберон

Вам не разрешено выводить конечные пробелы для алмаза.
lirtosiast

1

Желе , 46 байт (не конкурирует)

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

Попробуйте онлайн! (Скопируйте / вставьте каждый фрагмент)

Видимо, ограничение не ограничивало игру в гольф :) Просто предложения по последнему, конечно, пожалуйста.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.