Создайте программу cat, то есть программу, которая принимает входные данные и печатает их.
... Кроме того, программа будет случайным образом забирать символы из вашего ввода и печатать их вместо этого.
Каждый символ на входе должен иметь равные шансы для удаления с помощью программы, хотя, поскольку это трудно сделать, шансы для каждого символа могут варьироваться не более чем на 10%.
Ваша программа должна принять ввод, затем случайным образом удалить символы из ввода, а затем снова распечатать эту версию. (Вы можете печатать с последующими символами новой строки или другими символами, если ваш язык должен печатать символы новой строки.)
Если вход был BOOOWL
, он не должен удалять все Os с равной вероятностью: каждый символ (не уникальный) должен рассматриваться, поэтому вместо каждого объединенного O, имеющего шанс 1/5 (например), каждый O должен иметь 1 / 5 шансов, так что , вместо того , чтобы там быть 1/5 шанс BWL
, должно быть 1/5 шанс BOWL
, BOOWL
.
Вход ограничен STDIN или ближайшим эквивалентом.
Каждый персонаж должен иметь минимум 10% и максимум 30% вероятности быть удаленным.
Шансы каждого персонажа должны рассчитываться индивидуально.
Вы можете использовать любой компонент вашего языка, поддерживающий случайные действия, будь то функции или что-то другое.
Вывод должен быть через STDOUT или ближайший эквивалент. Если на вашем языке есть STDOUT, не выводите другим способом. Если ваш язык не может выводить строки в виде текста, используйте ближайший эквивалент (вывод массива символов C в порядке).
Это код гольф. Кратчайшая программа выигрывает.
BOWL OF SOUP
могутO
быть удалены все за один раз?Output must be through STDOUT, as a text. Do not output a character array.
<- у меня есть язык, который позволяет выводить массив символов (он выравнивается перед выводом). Это запрещено? Как насчет языков, таких как C, где строка - это в основном массив символов?Ответы:
Japt
-f
, 2 байта-f
Флаг «запускает программу по каждому элементу в первом входе, выводит массив тех , которые возвращают значение truthy.»5ö
возвращает случайное число от 0 (включительно) до 5 (исключая). Как и JavaScript, 0 - это ложь в Japt.Попытайся
источник
-f
, в заголовке.Python 3 , 63 байта
Попробуйте онлайн!
Python 2 ,
6765 байтПопробуйте онлайн!
Каждый персонаж с вероятностью 20% быть сброшенным.
Другой подход, одинаковая длина:
Попробуйте онлайн!
источник
Create a cat program, a.k.a a program that takes an input and prints it.
Древесный уголь , 4 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Вы можете использовать любое число от
4
до,10
чтобы получить шансы25%
на10%
соответственно.источник
Befunge-98 (PyFunge) , 11 байт
Попробуйте онлайн!
Каждый персонаж имеет 25% шанс быть удаленным. Это решение принято по трем
?
инструкциям.?
устанавливает счетчик программ на одно из четырех направлений с равной вероятностью. В этом случае вверх и вниз возвращаются к одной и той же инструкции, поэтому мы можем игнорировать их как опции.Есть два выхода из лесаp2=1/2 вероятность вывода. Вероятность вывода , если начиная справа p3=1/2∗1+1/2∗p2=3/4 . Поэтому после прочтения символа мы переходим к крайнему правому краю,
?
s: направо (вывод) и налево (нет вывода). Эта ситуация является симметричной, так что если начиная с середины?
, существует?
является?
чтобы определить, выводить или нет.источник
октава , 23 байта
Создает массив того же размера, что и входные данные (строки в Octave являются символьными массивами), проверяет каждое из случайных чисел, превышает ли оно значение,
0.2
и затем использует логическое индексирование для извлечения символов в соответствующих позициях.Попробуйте онлайн!
источник
Желе ,
95 байтПопробуйте онлайн!
Монада, которая принимает строку Jelly в качестве аргумента и возвращает обработанную строку Jelly. При использовании в качестве полной программы неявно печатает вывод. Каждый персонаж имеет 20% шанс быть удаленным.
объяснение
источник
Japt , 3 байта
Каждый персонаж имеет шанс 1 к 5 быть удаленным.
5
Может быть изменен ни к чему между4
&9
, включительно, илиA
для ,10
чтобы изменить шансы.Попытайся
источник
Wolfram Language (Mathematica) , 24 байта
Попробуйте онлайн!
Принимает список символов в качестве входных данных. У каждого персонажа есть
.2
шанс быть удаленным.источник
05AB1E ,
54 байта-1 байт благодаря @Grimy .
Попробуйте онлайн или запустите ту же программу 10 раз .
Каждый персонаж имеет 25% -ое изменение выпадения.
Объяснение:
≠
также может быть_
(==0
).источник
5L
может быть₄
для -1 (изменяет шанс с 20% до 25%, что все еще приемлемо).MATL , 9 байт
Exaplanation:
Попробуйте онлайн!
источник
Pyth ,
85 байтовПопробуйте онлайн!
Предыдущая версия, 8 байт:
Попробуйте онлайн!
источник
Q
выдаст ошибку, если ввод не python-esque. Ошибки например от[1
илиa/b
.Q
,w
иz
будет работать только для однострочного ввода, поэтому, вероятно, лучшим вариантом будетj.z
Cubix , 20 байтов
Попробуйте онлайн!
Дольше, чем я надеялся, так как у меня было много неактивных операций, от которых я не могу избавиться. Шанс уронить персонажа составляет 25%. Я полагаю, это нормально.
Смотреть это беги
Краткое объяснение:
A|A
это инициализирует стек, вводит все, отражает обратно, вводит все (только EOI -1);?
поп в стек, тест на EOI (-1)._?@
если отрицательный, отразить обратно в тест и закончить при остановке$D
прыгать\
в случайном направлении установщика.o
выходу for, затем обратно в цикл, один пропускаетo
его путь и идет прямо в цикл.источник
APL (dzaima / APL) ,
109 байтов SBCSФункция анонимного молчаливого префикса. Каждый персонаж имеет точно 20% шанс быть удаленным.
Попробуйте онлайн!
5¨
ноль для каждого символа?
диапазон случайных целых чисел 1–5 для каждого символа4≥
Булева маска для тех целых чисел, которые меньше или равны 4⊢⌿⍨
фильтровать аргумент, используя эту маскуисточник
Сетчатка , 15 байт
Попробуйте онлайн! Объяснение:
Обработайте каждого персонажа индивидуально.
Произведите замену наугад. Первая замена удаляет символ, в то время как остальные три оставляют его без изменений, что дает
25%
возможность удалить символ. Это может быть уменьшено по мере необходимости, добавляя дополнительные пары новых строк.источник
R ,
3223 байтаПопробуйте онлайн!
Функция, принимающая вектор символов в качестве входных данных и возвращающая обработанный символьный вектор. Каждый персонаж имеет 20% шанс быть удаленным.
Спасибо @Roland и @Giueseppe за помощь в сохранении 7 байтов и @JDL за еще 2!
источник
function(x)x[!rbinom(x,1,0.2)]
function(x)x[rf(x,1,1)>1]
;df(1,1,1)
о том,0.16
что делает трюк.rt(x,3)>1
(с вероятностью около 20%)<1
, но спасибо! Еще 2 сохранено.T-SQL 2012, 83 байта
Циклический ввод справа налево, удаление 0 или 1 символа.
25% -й шанс на удаление каждого персонажа.
Объяснение:
Попробуйте онлайн
источник
STR
, мне придется запомнить это. Не уверен, что это справедливо - использовать ваш (не учтенный)DECLARE
в вашем (подсчитанном) коде; но изменение этого будет стоить вам всего 1 байт, так как вы можете устранить лишнееSET
с помощьюDECLARE @ INT=len(@i)
J , 10 байт
Попробуйте онлайн!
Аналогично ответу Адама на APL, хотя я и написал его, прежде чем посмотреть на его.
6.. $~ #
Возьмите длину ввода#
и сформируйте$~
число 6 в этот длинный список.?@
Рассматривайте каждую шестерку в этом списке как кубик и бросайте?
его.>5
Является ли матрица меньше 5 (возможные значения 0..5)? Используйте этот логический результат для создания битовой маски.#~
Отфильтруйте вход с этой маской.источник
Perl 5
-p
, 18 байтПопробуйте онлайн!
Каждый персонаж имеет 20% шанс выпадения.
источник
Javascript,
464451 байт+7 байт из-за добавленного требования STDOUT
-2 байта спасибо Бирджолаксеву
оригинальный ответ: 44 байта без требования STDOUT
источник
f=
приводит к уменьшению до 44 байтов. Вы также можете вводить / выводить как массив, что должно немного сэкономить.join``
значит? Не могу найти его в спецификации (потому что я действительно не знаю, что это)join("")
mdn revelent page
Scala ,
514630 байтПопробуйте онлайн!
PS. Как и во многих других решениях, вероятность выпадения полукокса составляет 20%.
Обновить:
-5 байт, используя String вместо Option [String] в flatMap
30 байт с использованием фильтра
источник
scala.math.random
вmath.random
и0.2
к.2
. Хороший трюк, использующий ^ как этот.C # (интерактивный компилятор Visual C #) , 71 байт
Попробуйте онлайн!
источник
new Random().Next(5)
невозможно?new Random().Next(5)
, все, что вы получите, это весь ввод или ничего.new Random()
, начальное значение по умолчанию - Environment.TickCount, которое увеличивается каждую миллисекунду. Если они все созданы в одном и том же миллисекундном тике, у них будет одинаковое начальное число. В ответе используется только один экземпляр Random, и когда он вызывается, он обновляет внутреннее начальное значение - поэтому каждый раз, когда вызывается Next (), он создает другое выходное значение. Однако .Net Core использует одноэлементный ГСЧ для генерации начального числа, поэтому у него нет этой проблемыSTDIN
, ноrestricted to STDIN or closest equivalent
аргументы функций могут быть ближайшим эквивалентом, но я не собираюсь этого делатьPHP ,
4342 байтаПопробуйте онлайн!
Каждый персонаж имеет 20% шанс быть удаленным.
источник
C (GCC) , 50 байтов
Эта программа с 20% -ной вероятностью выбросит письмо. К сожалению, генератор случайных чисел не засеян, поэтому вы получаете одну и ту же последовательность при каждом запуске. По сути, единственный трюк - инвертировать входной символ, чтобы остановить цикл в EOF.
Попробуйте онлайн!
C (gcc) ,
6459 байтБлагодаря потолку catcat за -5 байтов.
Если вы хотите, чтобы RNG высевался при каждом запуске.
Попробуйте онлайн!
источник
main()
для представления Code Golf, вы также можете определить произвольную функцию, которая делает то, что требуется. Так что вы можете написатьf(c){...}
.Луа ,
6968 байтПопробуйте онлайн!
Вроде простая, но, похоже, самая короткая версия: перебираем stdin char за char (с
io.lines
… это имя вводит в заблуждение), затем на основе случайного значения выведите одну или пустую строку (например, ничего).источник
Джава
Не прекращается: 82 байта
Завершение (TIO): 105 байт
источник
s->s.filter(c->Math.random()<.2)
тоже.Input is restricted to STDIN or closest equivalent.
иOutput must be through STDOUT or the closest equivalent. If your language does have STDOUT, do not output in any other way.
так нет, этот ответ недействителенZsh ,
5341 байт-12 , благодаря GammaFunction
41 байт: попробуйте онлайн!
Преобразует входные данные в массив символов, затем пытается распечатать каждый элемент
c
, если только он не будет получен((RANDOM%4))
оценкой в значение false!53 байта: попробуйте онлайн!
Более простая, но многословная итерация по длине строки.
источник
\c
, я бы не вспомнил об этом! Еще предстоит сделать несколько оптимизаций ...RANDOM
и преобразование массиваZsh , 50 байтов
Попробуйте онлайн!
Аналогичен ответу RobLogic, но более точно следует требованиям ввода и работает для входов с обратной косой чертой.
"$(<&0)"
вместо"<&0"
или$(<&0)
потому что первый не работает в подстановках, а второй ест новые строки. Эти-nE
флаги необходимы , чтобы предотвратить обратную косую черту от быть разобрано как управляющие последовательности, а также для предотвращения новой строки вставляется.echo -nE
источник
MathGolf , 5 байтов
Попробуйте онлайн!
объяснение
Каждый символ будет повторяться 0 или 1 раз, в зависимости от случайного значения. Поскольку ожидаемое значение после смещения квадратного корня смещается на 25%, вероятность удаления каждого символа равна 25%.
Альтернатива 5-ти байтовая
Отфильтруйте символы по случайному числу в [0, 4]. Из-за того, как работает фильтрация, я должен отбросить фактический символ в цикле фильтра, который добавляет 1 байт.
источник
GFortran , 120 байт
Неплохо, если мы используем устаревшую
RAN()
функцию, которая является псевдослучайной , то есть вы получаете одну и ту же последовательность каждый раз. Правильный способ для генерации случайных чисел в GFortran есть сCALL RANDOM_SEED()
и ,CALL RANDOM_NUMBER(R)
но это много байт!Попробуйте онлайн!
источник
Oracle SQL, 133 байта
Он работает с предположением, что входные данные хранятся в таблице t (x), например
источник