Створіть вихід удвічі більше довжини коду


85

Змагання

Напишіть повну програму, яка записує вдвічі більше байтів до стандартного виводу, ніж довжина програми.

Правила

  • Програма повинна записати символи ASCII на стандартний вихід.

  • Зміст виводу не має значення.

  • Вихід, виміряний в байтах, повинен бути рівно вдвічі більшим за довжину програми, також вимірюється в байтах, якщо ви не виконаєте бонус.

  • Будь-який трейлінг нового рядка включений у кількість байтів виводу.

Бонус

Ваша програма може додатково прийняти число n, як вхід. Якщо так, вихід повинен бути точно n * program lengthбайтами. Можна припустити, що n завжди буде додатним цілим числом. Якщо введення не вказано, nмає бути за замовчуванням 2.

Якщо ви це зробите, ви можете відняти 25 байт від вашої оцінки.

Найкоротша програма виграє.

Обмеження

  • Немає стандартних лазівки

  • Програма повинна бути принаймні 1 байт.

  • Немає додавання зайвого простору до вихідного коду, щоб змінити його довжину. Так само коментарі не враховуються.

  • Якщо ви не виконаєте бонус, програма не повинна приймати жодних внесків. Якщо ви виконаєте бонус, ціле число повинно бути єдиним входом.

Найнижчий рахунок (довжина програми в байтах - бонус) виграє.

Найкоротша відповідь на кожну мову виграє для цієї мови .

Табло лідерів

Ось фрагмент стека для створення як звичайного табло, так і огляду переможців за мовою.

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

# Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Якщо ви хочете включити у свій заголовок декілька чисел (наприклад, тому що ваш результат становить суму двох файлів або ви хочете окремо вказати штрафні санкції для перекладача), переконайтесь, що фактичний результат - це останнє число у заголовку:

# Perl, 43 + 2 (-p flag) = 45 bytes

Ви також можете зробити ім'я мови посиланням, яке потім з’явиться у фрагменті таблиць лідерів:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
Що стосується бонусу, чи має вихід бути точно n * program lengthбайтами, чи це мінімум?
xnor

2
Це має бути точним
Даніель М.

3
Схоже, фрагмент коду має бути змінено для обробки негативних результатів.
El'endia Starman

40
Бонус -25 в основному є обов'язковим для деяких мов, оскільки це дозволяє їм досягти негативного балу. Надалі я б запропонував використати відсотковий бонус або просто зробити бонус питанням, якщо ви дійсно хочете відповіді на нього. Або просто не мають бонусу.
xnor

4
Якщо "введення не надано", чи припускаємо, що порожній рядок передається? Я не бачу, як можна було б мати справу з користувачем, який ніколи не вводив дані, а програма просто чекала.
xnor

Відповіді:


138

HQ9 + , 2 байти

QQ

виходи

QQQQ

Я думаю, що це тут не заборонено.


14
Це може бути не заборонено, але це не дуже інтер ... зачекайте, як це отримало вісім оновлень?
Джон Дворак

58
@JanDvorak Наскільки мені не подобається HQ9 +, це для мене творче використання. Це використання, швидше за все, не передбачалося при створенні HQ9 +, що більше, ніж можна сказати для більшості інших програм Hq9 +. +1 від мене.
Цифрова травма

13
Я навіть не знав, що Q друкує "вихідний код програми". Я подумав, що це просто надрукував Q. Добре зроблено для виявлення вирішальної різниці!
Тімві

7
@ LegionMammal978 Технічно це постійне завдання виводу, а це означає, що мови непрограмування дозволені.
спагето

3
Це 120 голосів. 1200 повторень для введення QQперекладача.
Стен Струм

95

Шекспіра, 768

Так, у Шекспіра не так багато мови про гольф. Виходить 1536 пробілів.

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

Редагування: 256

Гаразд, я насправді гольфу. Зауважте, що вищезгадане не вкладається в жодну існуючу Шекспірівську реалізацію, тому що я написав це кропітко вручну (але готовий відстоювати її правильність.)

Нижче перекладається на C з одним попередженням в spl-1.2.1 і видає 512 пробілів:

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.

15
Я поставлю +1, якщо ви насправді гольфу.
lirtosiast

1
Що це за хитрощі? Я навіть не знав, що таке існує ...
Малавос

10
Уау, ти це гольфу. Святі притулки.
Малавос

2
@Malavos Я просто жартував про те, як ви неправильно написали чаклунство, вибачте - як і що, напевно, добре
кіт

2
Ні, я прошу вашої прощення, якби я звучав образливо чи оборонно. Я щойно робив посилання на Футураму! :) На серйозну ноту я все ще дивуюсь цій відповіді. Нам потрібно більше таких на сайті.
Малавос

69

Нагадаємо, 17 байт

................!

16 НООП. Потім виводиться налагоджувач !і скидає пам'ять на консоль. Пам'ять порожня, але заголовок - 34 байти:

-- STATE DUMP --
----------------

Спробуйте тут .


13
Це одна з крутих відповідей ІМО.
кіт


60

CJam, -17 байт

r2e|i8,*

Вихідний код довжиною становить 8 байт і відповідає бонусу -25 байт .

Спробуйте його в Інтернеті в інтерпретаторі CJam .

Як це працює

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.

4
Лайно. Молодці.
The_Basset_Hound

1
Як це негативні байти?
Нік Т

3
@NickT 8 байт (вихідний код) - 25 байт (бонус).
Денніс

16
Ви можете зберегти кілька мільйонів копій, якщо у вас не вистачає місця на диску.
Роберт Фрейзер

Ні, я думаю, що метадані зробили б це позитивним
CalculatorFeline

47

Пітон 2.6, 10

print`-.1`

Друкує -0.10000000000000001, що на 20 символів.

Зауважте, що рядок repr демонструє більшу точність. print-.1просто дає -.1та print.1/3дає 0.0333333333333лише 13 цифр точності.



@AndersKaseorg Тож помилка repl.it ?
mbomb007

2
@ mbomb007 Мабуть. GitHub припускає, що навряд чи єдине, в чому це неправильно. Ideone погоджується з CPython.
Anders Kaseorg

Той самий коментар, що і до вашої іншої відповіді: чи не друкує цей останній рядок, даючи 21 байт виводу?
Мартін Ендер

1
Ви маєте на увазі print`+.1`?
mbomb007

46

Насіння , 10 байт

4 56111240

Це компілюється до програми Befunge (знайденої грубою силою)

9k.@

який під час запуску видає наступні 20 байт (тестується в CCBI, зверніть увагу на пробіл):

0 0 0 0 0 0 0 0 0 0 

Будучи незнайомим з Befunge 98, мені довелося кілька разів перевірити специфікацію цього:

  • k мені здається досить зламаним, виконуючи ще один раз, ніж задумано, через перехід IP в повторну інструкцію
  • Склади Befunge 98 мають внизу нескінченні нулі
  • . виводить як число, після чого пробіл

18
.... я .... просто .... не можу.
Даніель М.

44

R, 3 2 байти

Код

!0           # NOT FALSE

Виходи

TRUE

Нічого собі, нарешті R, нарешті.

Здається, що {}робота теж, це дає результатNULL

Бонус 33 16 байт:

Код

rep(1,number*16)

Виходи

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2
Я сподіваюся, що ім'я "число" для змінної не є рівнозначним "додавання зайвого пробілу до вихідного коду"
Mutador

26

Матлаб, 7 5 байт

На 2 байти менше завдяки @flawr!

123;3

Вихід:

введіть тут опис зображення

Вихід містить 10 байт.newline ans = newline newline 3 newline


1
Будемо сподіватися, що ніхто не має format compactза замовчуванням :)
Sanchises

2
@sanchises :-) Так, це залежить від того, як були встановлені переваги Матлаба. Але format looseє перевагою за замовчуванням
Луїс Мендо

2
Як щодо 123;4? На три байти коротше =)
недолік

@flawr Хороша ідея! Опублікуйте самі!
Луїс Мендо

Ні, набагато надихнувшись вашою відповіддю =)
недолік

25

JavaScript, 2 байти!

Навіть коротше, ніж 3-байтне рішення:

!0

Повертається trueпісля запуску.


2
Зауважте, що це працює лише в середовищі
REPL

21

Пітон 2, 11

print`id`*1

Роздрукуйте рядкове представлення вбудованого id, що становить 22 символів:

<built-in function id>

Потрібно *1отримати код до 11 знаків. Ви також можете зробити print id;00.

Більш нудною альтернативою 11 років є:

print'1'*22
print 9**21

Я граю зі складними номерами, але, на жаль print.8/-9j, одна
гарна

Чи не надрукувати наступний новий рядок, довівши кількість байтів до 23?
Мартін Ендер

1
@ MartinBüttner Це правило було відредаговано пізніше, але змінити його print id,;1достатньо, щоб придушити нижній новий рядок. Він також не додає пробілу.
xnor

@xnor print 9**21не працює. Це 21 символ. print 9**23працює хоча
Koishore Roy

18

постійного струму, 10 - 25 = -15

2?A*Ar^1-n

Приймає порожній рядок для "без введення".

Обчислює 10 ^ (10 * n) - 1, де n - вхід, або 2, якщо вхід порожній. Друкує рядок 9s потрібної довжини.

  • 2 натисніть 2 до стеку, якщо вхід порожній
  • ? натисніть вхід до стеку
  • Aнатисніть 10 до стеку (у постійного струму є ярлики A- Fдля 10 - 15)
  • * клацніть двічі та помножте (помножте введення на 10)
  • A натисніть 10 до стека
  • r зворотні верхні два елементи укладання
  • ^ показник 10 ^ (10 * вхід)
  • 1- відняти 1 від верхньої частини стека
  • n друкувати без нового рядка

Данг, це так розумно. І пощастило з довжиною коду там :) Але, можливо, вам слід додати невелике пояснення непосвяченим. І я думаю, що новий рядок має значення, тому ви, мабуть, повинні використовувати nзамість цього p.
daniero

17

TI-Basic, 3 байти

1ᴇ5

Друкує 100000.


Власне, я думаю, що новий рядок буде рахуватися, тому ви можете просто зробити 0за 1 байт.
lirtosiast

1
Як щодо ᴇ3? І @lirtosiast, оскільки у TI-Basic немає нових рядків, я скептично ставлюсь до цього.
Якоб

16

Brainfuck, 14 байт

+++++++[....-]

Це трохи математична вправа. Позначимо кількість +символів у коді через a, а кількість .символів через b.

Код виводить a*bбайти зі значеннями aвниз до 1(це байти, що не належать до ASCII, але за специфікацією здається нормальним). Довжина коду - a+b+3. Так ми маємо

a*b = 2 * (a+b+3)

Спробуючи різні значення для aі b, ми бачимо, що мінімум для a+b+3досягається для

a = 4       or       a = 7
b = 7                b = 4

Ветеран-програшник, який відмовився, помітить цей +[[>....]-<<+]варіант.
ортоплекс

@orthoplex Коли я читаю ваш коментар, я одразу portmanteau'd brainfuck і програміст: brainfucker
Poke

15

gs2 , -18 байт

CP437 :W↕0!↨.2

Шістнадцятковий дамп: 57 12 30 21 17 2e 32

Wчитає номери зі STDIN у список. ↕0додає 2 до списку та !витягує перший елемент. Потім ↨.(список [0,1,2,3,4,5,6]) повторюється ( 2) це багато разів.

Це дуже схоже на CJam відповідь Дениса - GS2 просто поєднує в собі rі iв один байт.

Примітка . Мені довелося виправити помилку в gs2реалізації, щоб це працювало: раніше до кожної програми був доданий прихований новий рядок, доданий до його результату, який був цілком ненавмисним. Це з’явилося лише після того, як я спробував вирішити цю програму (мова була розроблена для анархічного гольфу, який ігнорує проривання нових рядків у всіх проблемах), і я лише підштовхнув виправлення до майстра лише зараз, тож не соромтеся приймати цю відповідь із зерном сіль.


1
Перша відповідь GS2, яку я бачив, що жодних символів карткових костюмів немає!
Cyoce

14

Perl 5, 16 байт - 25 = -9

$_ =$]x($_*2||4)

Це дивний підхід до проблеми.

Запустити з -pаргументом командного рядка.

Нижче я побачив відповідь Perl, яка використовувала спеціальну змінну для друку більше тексту - і таким чином скорочувала їх кількість байтів. Тому я використав набагато більш багатослівну спеціальну змінну. Він друкує 8 символів із 2-х символьною змінною. Таким чином, з числом байтів 16 (підкресленим одним символом пробілу, щоб зробити це 16), він друкує 2 * $], де $]друкується версія Perl 5.xxxxxx, залежно від вашої версії Perl. Без введення він друкує його чотири рази, що дорівнює 8*4або 32, що вдвічі перевищує кількість байтів коду.

Я люблю Перл.


Я думаю, що це не вдається для порожнього введення. Згідно з правилами, якщо введення не вказано, кратне значення повинно бути за замовчуванням до 2.
Алекс А.

@AlexA. Чорт, я пропустив це. Нове в коді гольф. Редагуйте вхідні, але зараз у моїй відповіді багато символів, тому що я не маю уявлення, як це зробити більш креативно в perl :(
Codefun64

2
Привіт, ще кілька порад, які можуть вам допомогти тут, за замовчуванням у програмовому сценарії, popі shiftпрацюйте над @ARGV( над тим, як subвони працюють @_), щоб ви могли зробити щось на кшталт того, $n=pop||2щоб збити перший блок коду, і у вас є ;}в кінці , що майже завжди може бути просто }для збереження іншого. Щось, що може допомогти вам зберегти більше символів, - це оператор повторення рядків x, розгляньте print 1x20чи щось у цьому напрямку ... :) Сподіваюся, що це допоможе!
Дом Гастінгс

@DomHastings Людина, дякую! Я отримав його до 2 байт за вашу допомогу :) Дякую вам за ваші пропозиції.
Codefun64

1
Я думаю, ви можете скоротити це до цього print"n"x(21*pop||42). Запустити в командному рядку зperl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1

14

Піта , 10 9 - 25 = -16

-1 Денніс

**N9?zvz2

Друкує [введення] * 9 символів цитування або 2 * 9, якщо введення порожнє.

тут є коротша відповідь на isaacg

Піт , 1 байт

T

Друкує 10. Це вбудована змінна, яка ініціалізується на 10.


Було б корисно, якби .x працював з помилками. Чи є виправдання, чому це не відбувається?
lirtosiast

2
Я найкраще здогадуюсь, що Qзмушує Pyth оцінювати вхід до того, як буде виконаний фактичний код. **N9.xvz2працює , як очікувалося, але це не коротше **N9?zvz2.
Денніс

2
Будь-який трейлінг нового рядка включений у кількість байтів виводу. TВиводи 10та новий рядок. Використовуйте d, це місце, яке додає новий рядок
Stan Strum

9

Макарони 0,0,2 , 23 символи

print tobase pow 32 9 2

Друкує 32 9 у двійковому форматі, що, як правило, зручно виявитися довжиною 46 символів (це 1000000000000000000000000000000000000000000000), без зворотного нового рядка.


9

JavaScript, 4 байти

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

Я думаю, що це найкоротше можливе рішення JS без ES6: P


Яка версія NodeJS у вас є? Це не працює з моїм.
Денніс

1
Це також працює на консолі Firefox.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
Кінцевий новий рядок повинен бути включений у вихідну довжину.
lirtosiast

Node.js v0.10.40взагалі нічого не друкує, оскільки немає команди друку. У вас інша версія Node.js чи це працює лише в оболонці, яка друкує оцінку рядка? (в такому випадку я не думаю, що ця відповідь була б справедливою).
Натеовамі

4 байти? Будь ласка, зробіть це, власне, правильним розміром.
Star OS

9

C, 27 25

main(){printf("%50f",0);}

Дякуємо @Titus за збиття 2-х байт


А для мого неконкурентного 16-байтного рішення в C перейдіть сюди: https://codegolf.stackexchange.com/a/111330/16513

^ Я кажу, що не конкурує, оскільки код помилки, можливо, може залежати від вашого компілятора. Також зауважте, що я використовую GCC у цьому рішенні. Крім того, я не впевнений, порушує це правило 1 чи ні, я думаю, що це, мабуть, так і я, і я позначав це як неконкурентне


1
Я не думаю, що це вважається дійсною програмою C, але main(){printf("%0.XXf",0);}працює.
wefwefa3

2
@Zereges Ні, C має правило "неявної декларації", яке зазвичай дозволяє використовувати речі без належного #include. Компілятор видасть попередження, і воно інколи вийде з ладу, але зазвичай це спрацює .
anatolyg

1
@AlbertRenshaw Також я не думаю, що це працює тут .
Зереги

1
Зауважте, що 27 * 2! = 38.
mbomb007

1
@Zereges. Цей код не проявляє невизначеної поведінки. Особливості "неявної декларації" та "неявного типу повернення" застаріли в останніх стандартах, але їх використання все ще дозволено, а результати чітко визначені. Існують обставини використання таких функцій, що викликає невизначеність поведінки, але цей код не передбачає таких.
Петро

7

V , 2 байти

Це виводить

ÿÿÿÿ

Спробуйте в Інтернеті!

Пояснення

Це дійсно хитра відповідь, і вона працює, зловживаючи внутрішніми елементами V. По суті, як це працює, це те, що ÿце команда в V, яка сигналізує, що програма закінчена, і будь-які команди, що очікують, повинні виконати. Інакше деякі неявні закінчення не спрацювали б, а інтерпретатор повісився б частіше. Ця команда автоматично надсилається кілька разів в кінці програми, і більшість часу не впливає на вихід.

éце команда, яка вставляє один символ. Однак це робиться, схопивши необроблений байт, тому він не трактується ÿяк "кінець", він інтерпретує його як "це символ, який потрібно вставити". змушує вставити цього символу 4 рази замість одного.


7

баш, 11 байт

Ось приємно іронічне використання інструменту стиснення даних :) ...

gzip -f<<<2

Ось шістнадцятковий дамп виводу (22 байти) ...

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....

Це виводить 22 байти "розширеного ASCII" (наприклад, 8 біт на символ). Це, мабуть, відповідає визначенню ОПСІ OP, якщо ви читаєте коментарі до запитання.
Wossname

У TIO я отримав 16, але на моїй машині Linux я отримав 34
Stan Strum

@StanStrum, я не знаю, що таке TIO, але 34 під Linux є дивним. Можливо, у вас є gzip aliase використовувати різні перемикачі до нормального?
Wossname

Я не знаю, чи так це, але це здається дивним. Я спробую це на деяких LiveCD, щоб побачити, чи я переплутав його з однією зі своїх програм @Wossname
Stan Strum

1
Я не той хлопець, і я не скористаюсь своїми заробленими 129 реп. Тивм. Я побачу, чи можу я зробити версію, яка працює на моїй установці Linux
Stan Strum

6

постійний струм, 19 - 25 = -6

2?19*[1n1-d0<l]dslx

Бере число (2 висувається до стека як резервне копіювання) і помножує його на 19. Друкує a 1(немає нового рядка) і зменшує число. Петлі, поки число більше 0.


6

C ++, 80 байт

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

зауважте, що символ нового рядка - два символи. (якщо ви не хочете, щоб це було, змініть i <20 на i <= 19, щоб повернутися до того ж числа байтів.)

Вибірка зразка (змінюватиметься кожного разу)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

адреса пам'яті 8 символів 20 разів.


Деякі натяки на гольф: forпетля коротша за whileпетлю і дозволяє скинути брекети, це трохи дешевше у використанні cstdioі просто printfрядок, і вам нічого не потрібно повертати.
Лука

Ви можете зняти свій підхід до 63 байт: #include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}Але вже є коротша відповідь, дещо інший підхід.
movatica

6

CJam, -9

q_,{i}{;2}?G*'X*

Пояснення

  • q_,

Читає весь вхід і штовхає його, потім виштовхує довжину.

  • {i}{;2}?

Якщо довжина вводу більше нуля, перетворіть його на ціле число. В іншому випадку перейдіть на вхід і натисніть 2.

  • G*

Натискає 16 (довжина програми), а потім помножує її на 2, якщо немає вводу, або на вхід.

  • 'X*

Натискає на X і помножує його на верхню частину стека.


@ThomasKwa Whoops. Оновлення через секунду
The_Basset_Hound

Кома не потрібна, проте ви можете взагалі уникнути "якщо", якщо ви зробите логічне "або": q2e|iдасть вам потрібне число
aditsu

Також ви можете використовувати S замість 'X, єдине питання полягає в тому, що вихід не буде видно, поки ви не вибрали його (ну якщо ви запускаєте його в автономному режимі і перенаправляєте до файлу, це не проблема)
aditsu


Навіть при умовному ви можете це скоротити. Не потрібно обчислювати довжину, оскільки порожня рядок вже є фальсиєю. Вам також не потрібно виводити порожній рядок із стека, оскільки це не сприяє виводу. Що також дозволяє йо уникнути дужок для іншої галузі. Я придумав це , перш ніж я дивився на будь-якому з відповідей: r_{i}2?SB**.
Рето Кораді

6

> <> , 19 + 2 (прапор -v) - 25 = -4 байти

l?!2f4+*v
-1o;!?::<

протестуйте його тут!

Дякую Коулу та Sp3000

Спочатку перевіряє довжину стека, якщо вона 0 ставить 2 на стек. Помножимо його на 21 (довжина коду), потім виводить представлення унікоду цього числа та зменшує його на 1, циклічне до 0. (Вам доведеться перевірити вихід, щоб побачити символи, оскільки браузер їх не відображатиме)


1
Так, вибачте, що зіпсуєте свою відповідь (але вона коротша за мою, якщо від цього ви почуваєте себе краще). Редагувати: у відповідь буде введено занадто рано, ваш запис, як він є зараз, недійсний відповідно до правила "Ви можете припустити, що n завжди буде додатним цілим числом. Якщо введення не вказано, n повинен бути за замовчуванням до 2." Я також думаю, що він може надрукувати один занадто багато символів (це міняє від 14 до 0, що за моїм рахунком становить 15 символів, а не 14). Якщо я маю рацію, l0=?2f6+*vяк перший рядок і 1-::0=?;o>як другий повинен зробити це правильно.
Коул

Гм, не впевнений, що ти маєш на увазі. Він ні в якому разі не повинен друкувати 0. Поставивши 2 як вихідний стек (EDIT: речі, які я не можу вставити), що, принаймні, використовуючи цей лічильник знаків , становить 28 знаків.
torcado

Я розумію, що ти зараз кажеш. Я інтерпретував "Ваша програма необов'язково може приймати число, n як вхідне", тобто якщо введення було б 2. Я відредагую відповідь, дякую! (також я можу зберегти деякі, використовуючи рядок замість чисел)
torcado

Раді допомогти, особливо якщо це <<>.
cole

2
?!зазвичай краще, ніж0=?
Sp3000

6

JavaScript (ES5), 68 байт - 25 бонусів = 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(якщо ваш веб-переглядач не дозволить запустити фрагмент з міркувань безпеки, спробуйте цю скрипку http://jsfiddle.net/thePivottt/c3v20c9g/ )

Цей скрипт працює лише в браузері, дотримуючись принаймні DOM3 (з Node.textContent) та ECMAScript 5 (або, можливо, більш стару версію). Я намагався зробити це максимально сумісним та сумісним. Він також передбачає, що сценарій знаходиться в першому scriptелементі документа.

Це насправді поєднує в собі кілька копій самого сценарію, що досить приголомшливо . Зауважте, що фрагмент інструменту для SE розміщує додатковий пробіл навколо сценарію. Ми могли б ігнорувати цей пробіл, .trim()але я не вважаю за потрібне, вважаючи, що програма ідеальна без втручання SE. Просто збережіть цей файл HTML5, якщо ви хочете, щоб він працював ідеально.

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

Цей сценарій використовує promptі alertтому console.log, що не є частиною жодного стандарту, навіть якщо більшість сучасних браузерів ним користуються. Якщо кількість пройдених повторів не є дійсним числом або порожнім, воно за замовчуванням дорівнює 2. Якщо вхід - це десяткове число, програма виходить з ладу через недійсну довжину масиву.

Код використовує кілька цікавих функцій JavaScript:

  • Array(1+(+prompt()||2))

    • Array(INT) створює масив комірок INT.

    • +prompt()бере вхід і перетворює його в число. Якби ми передали введення як рядок, Arrayфункція просто би загорнула його в одноелементний масив.

    • +prompt()||2повертає вхід, якщо він truthy , в іншому випадку він повертає 2.

    • Весь цей код створює масив з N порожніх елементів, де N - це більше, ніж кількість запитуваних повторів.

  • .join(document.scripts[0].textContent)

    • Метод масиву join(STRING)створює рядок, об'єднуючи всі комірки, ставлячи надані STRING між значеннями. У цій програмі в масиві є N + 1 порожніх елементів, або саме N між проміжками. Результатом буде рядок, що містить N разів, ніж надано STRING.

    • document.scripts[o]є першим <script>елементом документа.

    • textContentУ Nodeвипадках повертає весь знайдений текст всередині них і їх дочірніх вузлів, включаючи скрипти.


Зауважте, що якщо ви використовуєте ES6 str.repeatта все-таки виводите сам код, він знижує бал до 26, але це занадто нудно: P
Domino

Ерм, я не знаю, звідки взялося це 26, зараз мені 33. Мені, мабуть, слід трохи поспати.
Доміно

Зауважте, що деякі налаштування браузера можуть перешкоджати використанню підказки на фрагменті. Можливо, вам доведеться зберегти його для запуску.
Доміно

6

JavaScript ES6, 33 - 25 = 8

(a=2)=>Array(a*33).fill(0).join``

Спробуйте в Інтернеті!


Я не можу зробити цей код запущеним на консолі. Це право? "Uncaught SyntaxError: Несподіваний маркер =>"
Malavos

@Malavos вам потрібен браузер, сумісний із es6, як-от остання Firefox. Chrome не підтримує аргументи за замовчуванням
afaik

Я використовую UCBrowser, але це правильно! Це все-таки засноване на хромі та геконі. Спробував це вночі, отримав "00000000000000000000000000000000000000000000000000000000000000000000000000". Приємно! Чи можете ви пояснити свій код для мене? Я новачок.
Малавос

2
@Malavos Жорсткий код - 33це фактично довжина коду. Він створює новий масив з довжиною, 33*aде aпараметр входу за замовчуванням до 2, згідно з ОП, заповнює його і повертає об'єднаний рядок.
DankMemes

2
Створивши свій масив з одним додатковим елементом, ви можете заповнити приєднання Arrary(1+a*<length>)іjoin`0`
Shaun H

5

Джулія, 42 байти - 25 = 17

print("@"^42((r=readline())>""?int(r):2))

Це читає рядок із STDIN за допомогою readline(). Якщо він порожній, тобто введення не надано, то n визначається як вхід, перетворений на ціле число. В іншому випадку п = 2. Тоді роздрукуйте 42 л @ з до STDOUT.


5

Перл, 18 - 25 = -7

print$=x(<>*9||18)

Спеціальна змінна $=, так само $FORMAT_LINES_PER_PAGE, починає своє життя 60, і тому її потрібно дублювати лише вдвічі більше, ніж потрібно для виведення байтів.


1
У мене була дуже схожа відповідь: print$=x9x(pop||2)приємно!
Дом Гастінгс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.