Задний план
Человек интереса - криминальная драма на CBS, и мое любимое телешоу, в последнее время.
Шоу рассказывает о человеке по имени Гарольд Финч, программист-миллиардер, и его партнере Джоне Ризе, ветеране спецназа и бывшем сотруднике ЦРУ. Этот программист создал разумный ИИ под названием «Машина», который предсказывает насильственные преступления до того, как они совершатся. Он отслеживает каждого человека на Земле в любое время, отслеживая и анализируя все камеры наблюдения и электронные коммуникации по всему миру.
Гарольд создал Машину для правительства Соединенных Штатов, чтобы обнаружить террористическую деятельность до факта. Он делит преступления, которые он предсказывает, на списки, основываясь на том, имеют ли они отношение к национальной безопасности или нет. Соответствующие случаи обрабатываются правительством, в то время как «неактуальный» список запрограммирован на ежедневное удаление.
Гарольд сделал небольшой черный ход для себя, надеясь разобраться с «неактуальным» списком сам. Этот черный ход заставляет The Machine звонить в таксофон ближайшего Гарольда (раз в день или около того) и читать ему номер социального страхования. Этот SSN принадлежит кому-то, чья жизнь находится в опасности как часть преднамеренного преступления, или кому-то, кто планирует такое преступление.
Соревнование
Напишите программу, которая не требует ввода и выводит 30 случайных телефонных номеров и номеров SSN (см. Ниже).
Выход
Есть две строки текста, которые будут печататься каждый "день".
Crime predicted: 555-55-5555
Calling: 1-555-555-5555
с последующим переводом строки
Этот процесс должен повторяться в течение одного «месяца» (30 «дней»).
Телефонные номера
Каждый номер телефона должен иметь следующие элементы:
Должен иметь код страны США (первая цифра).
Должен иметь случайный код города (первый набор из трех цифр).
Должны быть
555
первые три цифры номера телефона , а затем 4 случайные цифры.
Вот аннотированный пример:
1-814-555-3857
| | | |
| | | |
| | | +----------> random four digits
| | |
| | +--------------> the set 555
| |
| +------------------> area code
|
+---------------------> country code
Номера социального страхования
Каждый номер SSN должен содержать 9 случайных цифр в следующем формате.
342-98-1613
пример
Crime predicted: 234-72-8311
Calling: 1-633-555-0188
Crime predicted: 135-77-0910
Calling: 1-202-555-4719
Crime predicted: 722-90-6653
Calling: 1-466-555-1069
...
Продолжаем еще 27 циклов.
Табло
Чтобы ваш счет отображался на доске, он должен быть в следующем формате:
# Language, Bytes
Зачеркивание не должно вызывать проблем.
1
. Что касается кодов городов, то для этой задачи подойдут любые три цифры. @minxomatОтветы:
CJam,
686664 байтаСпасибо Деннису за сохранение 2 байта!
Копирование не будет работать, так как есть несколько непечатаемых (по одному вместо каждой случайной группы), так что вот
xxd
дамп:Чтобы изменить это, вставьте его в файл и запустите
xxd -r in_file > out_file
. Вы также можете попробовать это онлайн .объяснение
источник
Python 2, 129
Наивный метод. Принимает сообщение
и копирует это 30 раз. Затем заменяет каждый
x
случайной цифройrandint(0,9)
, оставляя все остальные символы такими же.источник
Python 2, 151 байт
Спасибо Господу (и @Dennis) за
%0nd
: Dисточник
Perl, 85 байт, спасибо Деннису и GRC!
Оригинальный Perl,
9192 байтаисточник
$_="..."x30;s/_/0|rand 10/eg;print
который спасает/r
флаг.0|rand ...
уловке и об операторе повторения, которым я сейчас пользуюсь, чтобы неоднократно ударить меня по голове за то, что пропустил это!CJam,
737170 байтПопробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
ß
121118112 байтВ основном заменяет 0 случайным числом каждый и вызывает себя 30 раз.
Проверьте это с помощью онлайн-терминала :
Редактировать (112B): Использование
$$
(что-то вроде sprintf) и троичного оператора.источник
Пиф, 66
Используется
X
для перевода последних 5 букв алфавита (>5G == 'vwxyz'
) на 5 случайных чисел. Использует тот же ГСЧ, что и Сок.Попробуйте это онлайн здесь
источник
Пиф, 62
Реализация фантастического ответа CJam Андреа .
Обратите внимание, что в источнике есть несколько непечатаемых символов, и не должно быть запаздывания
"
. Это было добавлено для SE, так что это кажется немного более читабельным. Я пока не смог получить hexdump, но ссылка ниже работает, и вы сможете скопировать и вставить его.Попробуйте это онлайн здесь
источник
CJam, 74 байта
Не победитель, но он, по крайней мере, несколько близок к тому, что есть у Денниса, и использует другой подход. Так что я подумал, что это все равно стоит опубликовать.
При этом используется
e%
оператор CJam , который генерирует выходные данные со строкой формата стиля printf.источник
Matlab / Octave, 108
172байтаПопробуйте онлайн
источник
JavaScript (ES6), 142
Примечание стороны mixmat ответ на ß показывает так лучший способ для решения этой задачи, и может легко реализовать в JS дает лучший результат. Хотел бы я подумать об этом.
Редактировать Добавил пропущенный текст (я неправильно прочитал вызов)
Протестируйте приведенный ниже фрагмент в браузере, совместимом с EcmaScript 6
источник
Фурье,
166142 байтаЭто один из самых высоких байтов, но я большой поклонник Фурье и хотел попробовать свои силы в решении. Не очень оптимизировано.
Разбивая это:
Устанавливает переменную d в 45, код ASCII для дефиса. Этот символ напечатан так много, что он экономит несколько байтов, чтобы объявить его здесь.
Устанавливает аккумулятор в ноль и циклически повторяется в скобках, пока не достигнет 30.
Распечатать "Преступление предсказано:".
Вывести абсолютно произвольный SSN + перевод строки.
Распечатать «Звонок:».
Напечатайте номер телефона, который следует указаниям: 1-xxx-555-xxxx
Напечатайте две строки, чтобы начать сначала.
источник
Pyth, 67 байт
Новые строки важны и включены в число байтов. Попробуйте это здесь .
источник
Haskell, 150 байт
источник
JavaScript (ES6),
130123 байтаПройдя шаг вперед по решению ß от minxomat, я заменил
0
s на количество0
s, которое было бы там. Код использует эти числа, чтобы извлечь правильное количество цифрMath.random()
, сохраняя при этом хороший бит байтов.Попробуйте это:
Как всегда, предложения приветствуются!
источник
Java, 246 байт
С переносами строк:
Это начало. Вместо создания случайных цифр я использовал случайные 3-значные или 4-значные числа.
источник
R
151146 или 144 байтаКод
Проверьте это онлайн .
Ungolfed
Я думаю, что есть много возможностей для улучшения, но я не очень хорошо балуюсь строками в R.
Edit 1: изменил
runif(16,max=10)
кrunif(16,,10)
.Я сделал еще один код (
147144 байта),sprintf
но я не думаю, что это R-подобный код.Другой подход (149 байт):
источник
PHP ,
144143 байтаисточник
GolfScript, 91 байт
Попробуйте онлайн.
источник
C #,
280263246 байтGolfed:
Отступ:
Новое на Codegolf, советы приветствуются!
источник
h(999)
будет генерировать число от000
до998
включительно, так что значит это не совсем ударил дух спецификации. Я столкнулся с той же проблемой .Калий , 230 байт
Expanded:
источник
Рубин, 98 знаков
Образец прогона:
источник
JavaScript,
146141источник
до ES6 Javascript, 128
Я чувствую, что черточки можно как-то удалить, но не уверен.
источник
Pyth, 73 байта
демонстрация
источник
Юлия, 120 байт
Ungolfed:
источник
Рубин,
9088 байтПопробуйте онлайн.
источник
?N
. Нет необходимости в скобках, вокругrand
параметра.PowerShell,
120108103102 байтУкоротил еще несколько байтов, установив разделенный цикл вместо кодового блока, который выводит в массив@(..)
и снова объединяется.Исключил
@
, вспомнив, что(...)
обозначает блок кода, выполняемый до-join''
или иным образом.Это избавляет от необходимости присваивать
$a
переменную. Также заметил, что из-за того, как-split
работает эта функциональность, предыдущий код выделял слишком много цифр для номера телефона, поэтому получил бесплатное сохранение байта, уменьшившись до1-XXX-555-XXX
. Это компенсировало ошибочное,Random 9
которое на самом деле выбирает случайным образом из0-8
, поэтому вместо этого нам нужно указатьRandom 10.
Оооочень близко к двузначным числам, но я не уверен, где можно сыграть в гольф еще с
четырьмябайта по 3 ...Предыдущая, 108
Сократил код на пару байтов, вместо этого разделив строку на
X
s, затем повторив цикл в результирующем массиве строк и конкатенируя каждую запись сRandom
цифрой, чтобы построить нашу окончательную выходную строку$a
. Обратите внимание, что мы не могли сделать что-то подобное,"string".replace("x",$(Random 9))
потому что тогдаRandom
звонили бы только один раз, так что у вас был бы1-222-555-2222
, например, номер телефона.Предыдущий, 120
Довольно привлекательный для многословного языка, благодаря обширным выходным спецификациям (т.
000-00-0001
Е. Рассматривается как действительный SSN) и действительно надежному.ToString()
алгоритму форматирования, который использует PowerShell. PowerShell также выводит\r\n
после каждого вывода строки, поэтому требование перехода на новую строку между итерациями является простым""
.Обратите внимание, что это использует подразумеваемый
Get-
передRandom
, так что это может быть очень медленным на некоторых платформах / реализациях.источник
Befunge-98, 170
Я думаю, что это все еще может быть немного проигнорировано. Но, по крайней мере, я победил C #. Проверено на befungius.aurlien.net .
источник
Python 2,
151150 байтКак только я смог получить этот метод.
источник