Эта задача с цепочкой ответов официально завершена, в результате чего победитель Wheat Wizard получил 7 ответов. Любой другой ответ приветствуется, но он не повлияет ни на принятый ответ на этот вызов, ни на победителя.
Задача:
Выведите все положительные делители числа, x
взятые в качестве входных данных.
Входные данные:
Единственное число, x
которое является числом (в базе 10), положительные делители которого должны быть вычислены.
Выход:
Все положительные делители x
. Любой формат допускается, в том числе \n
, ,
, ;
и пробелы в качестве разделителей, до тех пор , как это понятно. Выходными данными также может быть массив целых чисел или строк (например:) [1, 2, 3, 5, 30]
. Вы можете вывести делители на стандартный вывод, консоль или аналог на вашем языке, или они могут быть возвращены из функции .
правила
- Пользователь не может ответить дважды
- Ваш ответ может удалить, добавить или заменить не более 15 символов из предыдущего ответа (пробелы не учитываются), кроме того, для ответа 2, который может «преобразовать» до 20 символов, чтобы начать работу
- Вам не разрешается публиковать ответ на языке программирования, на котором уже есть ответ, за исключением того, что это совершенно другая версия этого языка (например, если я отправляю ответ
Python 2.7
, вы можете отправить его наPython 3
, но не наPython 2.6
) - Стандартные лазейки не допускаются
- Вы не можете использовать встроенные модули для получения делителей , ради этого вызова
- Вы должны указать номер ответа и название языка в заголовке вопроса и количество символов, измененных по сравнению с предыдущим ответом.
счет
Пользователь с наибольшим количеством представлений, как только вещи улаживаются, побеждает. В случае ничьей побеждает пользователь с наибольшим количеством баллов по одному из своих ответов. Если в счете также есть ничья, то победителем будет объявлен пользователь с самой старой отправкой (самый старый ответ с наибольшим количеством очков).
Примечание: "примириться" <=> 7 После того , как был отправлен последний ответ, прошло 3 дня
Примеры:
Input, Output:
14 => [1, 2, 7, 14]
25 => [1, 5, 25]
65 => [1, 5, 13, 65]
114 => [1, 2, 3, 6, 19, 38, 57, 114]
Или любой другой эквивалентный выход, удовлетворяющий указанным условиям.
Последнее замечание : этот вопрос лучше, если вы сортируете ответы по самым старым. Я отправлю первый ответ в Python 2.7, поэтому вы должны опубликовать второй ответ в зависимости от этого. Удачи и приятного времяпровождения!
Leaderboard:
Этот список может быть устаревшим, свободно редактировать его:
1) Мастер Пшеницы [Текущий Лидер 7] : 7 ответов - Python 1.6 , 05AB1E , На самом деле , Del | m | t , WSF , Brain-Flak , Lenguage
2) Райли: 3 ответа - Серьезно , CJam , 2sable
3) Джонатан Аллан: 2 ответа - Python 3 , Jelly
3) ETHproductions: 2 ответа - Джапт , Пиф
3) Mistah Figgins: 2 ответа - Befunge-98 , Brain-Flak Classic
6) Райкер: 1 ответ - MATL
6) Дзайма: 1 ответ - СОГЛ 0.8.2
6) LegionMammal978: 1 ответ - Пробелы
6) Ник Клиффорд: 1 ответ - Ом
6) Линн: 1 ответ - GolfScript
6) MickyT: 1 ответ - Cubix
Калькулятор расстояния
Вы можете использовать этот фрагмент для вычисления расстояния между двумя записями:
function L(s,t){if(s===t)return 0;var S=s.length,T=t.length;if(S*T===0)return S+T;for(var i=0,v0=[],v1=[];i<=T;i++)v0[i]=i;for(i=0;i<S;i++){v1[0]=i+1;for(var j=0;j<T;j++)v1[j+1]=Math.min(v1[j]+1,v0[j+1]+1,v0[j]+(s[i]!=t[j]));for(j=0;j<=T;j++)v0[j]=v1[j]}return v1[T]}
<textarea id=A rows=10></textarea><textarea id=B rows=10></textarea><br>
Distance: <span id=O>0</span> <button onclick="O.innerHTML=L(A.value.replace(/\s/g,''),B.value.replace(/\s/g,''))">Run</button>
источник
Ответы:
Ответ 20, Brain-Flak , 11
Я хотел бы просто поблагодарить всех, кто способствовал достижению этой цели:
Райли, 20 байт
LegionMammal, 15 байт
ETHproductions, 11 байтов
Линн, 1 байт
Следующие пользователи не могли напрямую вносить байты, но помогали другими способами:
Миста Фиггинс
DJMcMayhem
feersum
Спасибо всем за то, что сделали это возможным!
Попробуйте онлайн!
источник
Ответ 3: MATL, расстояние 15
источник
%
трудно продолжать. Удачи другим, и я очень надеюсь, что этот вызов не «умрет» здесь!Z\
. Соответствующий код здесь:tGw\~)
(который я написал в чате, а не встроенный)Z\
нет\
, это "делители". Заголовок в последних трех столбцах указывает префикс (X
,Y
илиZ
).\
Сам по себе это первый столбец, т.е. «мод»Ответ 7, Japt, 15
Попробуйте онлайн!
Изменено
#b∫I:b;\?t
наò f!vU
(10 баллов) и добавлено еще немного кода Brain-Flak путем изменения~(()
на((()<>))
(5 баллов). Я считаю, что код, над которым мы работаем,объяснение
источник
Ответ 8, 05AB1E , 14
Попробуйте онлайн!
объяснение
К счастью, 05AB1E имеет встроенный интерпретатор Python (своего рода). Чтобы сделать этот прогон, мы нажимаем
в виде строки на вершину стека. Здесь мы должны использовать строковые литералы вместо комментариев, потому что 05AB1E действительно не любит комментарии в своем коде Python. Мы также должны избавиться от
"
исходного кода, потому что это приводит к преждевременному завершению строки.После того, как строка была нажата, мы используем ее
.e
для выполнения в виде кода Python.Работайте над Brain-Flak
Я смог добавить 5 дополнительных персонажей к цели, чтобы получить ответ Brain-Flak. Я мог бы добавить 6, но, увы, я забыл, что пробелы не учитываются при наборе очков.
Пока что имеем:
источник
Ответ 13, Pyth , 15
Попробуйте онлайн!
объяснение
Так что я немного знаю Pyth, но я знаю, что исходный код имеет форму дерева, каждая команда принимает определенное количество аргументов справа от себя. Дерево программы делителя, которую я написал, выглядит так:
Q
это вход.f
принимает два аргумента,F
иA
, и возвращает элементы,T
вA
которыхF(T)
возвращает истинное значение. В этом случае,F
это функция , которая возвращает логическое отрицаниеQ%T
, иA
естьSQ
, что создает диапазон[1...Q]
. Это приводит к фильтрации только целых чисел,T
в[1...Q]
которыхQ%T == 0
.Чтобы избежать синтаксического анализа остальной части кода, все это помещается в строку, а затем
|Q"...
возвращает логическое ИЛИ ofQ
и строку. ПосколькуQ
он всегда положителен, он всегда правдив и поэтому всегда возвращается из логического ИЛИ.Работайте над Brain-Flak
источник
Ответ 16, GolfScript, 15
Попробуйте онлайн!
Я добавил
~:),(;{\%!},p#
, используя символ новой строки в качестве имени переменной, чтобы соответствовать ограничению размера, и сжал всю программу обратно на одну строку, чтобы закомментировать ее. Это было расстояние 14. Затем я добавил{
ранее}printdiv
для Brain-Flak.Работайте над Brain-Flak
источник
Ответ 17, CJam , 15
Попробуйте онлайн!
Работайте над Brain-Flak (30 вперед)
источник
)({}(((
в()({})((
ценою только два, это не точная программа , которую мы имели в виду , но()
и({})
не являются не-OPS в этом контексте.Ответ 4 - Желе , 4
Попробуйте онлайн!
Соответствующий код:
)
Действует как разрыв между ссылками, насколько анализатор обеспокоен (я считаю).Встроенным было бы
ÆD
, вместо этого это создает диапазон от1
входа сR
, проверяет делимость на вход с помощьюḍ⁸
, а затем возвращает список истинных индексов на основе сT
.источник
Ответ 9, Пробел, 15
Где
<SPACES>
заменяется следующей строкой, гдеT
0x09,L
0x0A иS
0x20:Буквальный перевод строки добавлен для ясности. Заметил, что в правилах указываются только непробельные символы. Нет, не мог с собой поделать.
Работайте над Brain-Flak
Я понятия не имею, что происходило раньше, поэтому теперь мы имеем:
источник
Ответ 18, WSF , 15
(Это требует ввода и вывода через код символа)
объяснение
WSF по сути является брейкфеком, за исключением того, что он использует пробелы вместо обычного набора операторов брейкфука. Вот код, декомпилированный в brainfuck:
Прогресс в направлении Brain-Flak
Поскольку WSF - это только пробел, я смог добавить еще 15 символов в код Brain-Flak. Это ставит нас в 15 от ответа, поэтому не стесняйтесь размещать его.
Так как я не собираюсь публиковать ответ «Brain-flak» сам, я подумал, что просто потрачу время, чтобы поблагодарить всех, кто помог в достижении этой цели:
Райли, 16 байт
LegionMammal, 15 байт
ETHproductions, 11 байтов
Линн, 1 байт
Следующие пользователи не могли напрямую вносить байты, но помогали другими способами:
Спасибо всем за то, что сделали это возможным!
источник
Ответ 19, 2 соболя , 15
Попробуйте онлайн!
Я удалил лишние пробелы, обернул все, что существовало прежде, в строку, затем:
источник
Ответ 21, Cubix , 15
Наконец-то удалось это уладить :) К счастью, это после того, как ответ Brain-Flak был сделан, потому что, думаю, я бы помешал. Требуются полные 15 для реализации.
Это соответствует следующему кубу
Можешь попробовать здесь , но вам нужно будет вставить его. Я подозреваю, что некоторые специальные предложения вызывают проблемы для постоянной ссылки.
Код по существу более 2 строк. Важными частями являются:
I s )
Это получает входные данные, меняет верхнюю часть стека (0 также сработало бы) и увеличивает% ?
Get и мод и тест. Если 0 продолжить или перейти к перенаправлению; O N o
Удалите результаты мода и выведите число, за которым следует символ новой строкиu
U, поверните на строку ниже.Последующее в порядке выполнения.
; - ! @
Удалите 10 из стека, вычтите число из ввода, проверьте и завершите, если ноль< ; u
Перенаправить цель для первого теста. Удалите вершину стека (результат модуляции или вычитания) и поверните обратно вверх, чтобы увеличитьисточник
Ответ 6, Python 1.6, 15
Я удалил
%
символы и закомментировал первую строку и немного последней строки. Это одно стоило мне 10 из 15 моих очков. Однако я еще не сделал; так как Python 1 не имеет,+=
мне пришлось заменитьi+=1
наi=i+1
стоило мне дополнительные 3 очка. Поскольку у меня осталось 2, я тоже добавил((
в начало. Я планирую сделать представление в Brain-Flak позже, и мне нужны парены.источник
Ответ 10, Ом , расстояние 5
...где
<SPACES>
заменяется эта чудовищная строка из пробела ответа " .Немного нахальный ответ, так как все остальное - просто провод, который лежит неисполненным.
источник
Ответ 12, Серьезно , 15
Попробуйте онлайн!
Единственное отличие от ответа « Фактически» заключается в том, что Серьезно использует обратные пометки, чтобы отметить функцию, в которой «На самом деле» используется
⌠
и⌡
и мы просто сделать дополнительные символы в строку , то выскочить и отбросить его.Работа к мозгу
источник
Ответ 14, Del | m | t , 15
Попробуйте онлайн!
объяснение
Я действительно начинаю злоупотреблять тем фактом, что пробелы здесь не учитываются. Del | m | t на самом деле все равно, какие символы вы, вы, так что подавляющее большинство кода представляет собой последовательность пробелов и возврат каретки в начале программы. Фактически видимые части кода не выполняются вообще.
Вот код, расшифрованный в более «разумной» форме:
Попробуйте онлайн!
Как это работает на низком уровне
Для начала у нас есть
O R ^ V
это служит для ввода данных в первом цикле и работает как неоперативный все остальные времена.Затем мы используем
O
чтобы сделать копию ввода для дальнейшего использования.@ A K T
вызывает переменную, сохраненную в позиции памяти -1 (в начале программы это 0) иA J
увеличивает ее.O @ A K U
Сохраняет теперь увеличенное значение обратно в позицию памяти -1 для нашего следующего цикла.N
вычисляет мод копии входных данных, которые мы сделали некоторое время назад, и значение, только что извлеченное из памяти, иR
отрицает его.Вместе
N R
создайте логическое значение, которое указывает, делится ли наш вход делителем TOS.Мы сохраняем копию этого логического значения в памяти -2, используя
O @ B K U
и вызываем значение из пространства памяти -2, используя@ A K T
.Мы поменяем два верхних элемента на
Q
чтобы убедиться, что логическое значение находится сверху, и выведите значение, если логическое значение истинно, используя^ X
.Если логическое значение было ложным, у нас есть дополнительное значение, которое необходимо удалить, поэтому мы вызываем логическое значение, которое мы сохранили в пробеле -2,
@ B K T
и извлекаем значение, если оно ложноR ^ P
.Мы дублируем входное значение с
O
и вычитаем значение в памяти -1 с@ A K T K
. Если это ноль, мы выходимR ^ _
.Наконец, у нас есть
@ ^
это пропускает независимо от следующего значения. Нам это нужно, потому что есть куча мусора (фактически только@
символ), сгенерированный видимой частью кода.Как только он достигает конца, он возвращается к началу.
Как это работает на высоком уровне
Основная идея заключается в том, что у нас есть значение, хранящееся в основном в ячейке памяти -1, которое увеличивается каждый раз, когда мы выполняем цикл. Если это значение делит наши входные данные, мы выводим их, а когда они равны, мы заканчиваем выполнение.
Прогресс к мозгу
Поскольку пробелы не учитывают разницу, я смог изменить код, не потратив ни одного из своих 15 пунктов, и, таким образом, все они были вложены в код Brain-Flak.
Вот наше нынешнее положение.
источник
Ответ 15, Befunge-98, 15
Попробуйте онлайн!
(Там, вероятно, много лишних пробелов, но я не могу потрудиться играть в гольф прямо сейчас)
Я использовал все 15 для программы Befunge, поэтому на этот раз никаких изменений в Brain-flak не произошло.
Моя основная стратегия для этого заключалась в том, чтобы отправлять IP по вертикали и использовать пробелы для выполнения определенных символов из существующего кода.
Объяснение:
Код, который имеет значение для программы Befunge:
Что эквивалентно:
источник
Ответ 2 - Питон 3 , 5
Попробуйте онлайн!
источник
async
илиawait
встроенные модули? Будет ли это рассматриваться как совершенно другой язык?Ответ 5 - SOGL 0.8.2 , 9
Объяснение:
Примечание: интерпретатор в настоящее время нуждается в
\n
замене символов s¶
, чтобы не считать их входными данными, но сам синтаксический анализатор считает, что оба являются взаимозаменяемыми.источник
Ответ 11, на самом деле , 15
Попробуйте онлайн!
объяснение
На самом деле есть хорошая встроенная функция
÷
для нахождения факторов ряда, однако нам не разрешено использовать такие встроенные функции.Я начинаю с сохранения входных данных в регистрах, чтобы они не пострадали от предстоящих событий. Я делаю это с помощью,
╩
но я мог бы так же легко использовать одну из других доступных команд.Затем я вставляю код, который у нас уже был (я удалил все пробелы, потому что работать с ним было неприятно, я могу сделать это, потому что «пробелы не учитываются»). К счастью, это ничего не делает, когда стек пуст.
Тогда у нас есть остальная часть программы
Работа к мозгу
Вся эта работа, и я смог получить только одного дополнительного парня.
источник
[]
включим код Brain-Flak в, мы можем иметь код Brainfcuk после него. Может открыть возможности.23, Brain-Flak Classic, 13
Первоначально, @Wheat Wizard опубликовал классический мозговой код, как это было в ответе 22:
Это 17 символов. Тем не менее, я смог сжать это, просто двигая
{})
дальше вправо в предложенном коде, чтобы получитьЧто только 13 символов! Поэтому все, что я сделал, это добавил / убрал скобки, чтобы получить предложенный код.
У исходного кода, который я разместил, была опечатка, теперь она исправлена. ( Спасибо @WheatWizard! )
источник
Ответ 1 - Python 2.7
Расстояние: NA - Первый ответ
Попробуйте онлайн!
источник
22, Ленгуаг , 15
Lenguage - это esolang, который заботится только о том, как долго программа не о ее содержании. Таким образом, мы можем создать любую программу на языке, которую мы хотим, заполнив последнюю программу нужным количеством пробелов. Lenguage скомпилирован в brainfuck, поэтому мы будем использовать программу brainfuck, которую я написал недавно
Я внес несколько изменений в основную программу, чтобы облегчить последующие ответы, но конечный результат выглядит следующим образом:
где
<SPACES>
представляет 55501429195173976989402130752788553046280971902194531020486729504671367937656404963353269263683332162717880399306 пробелов.Я злоупотребляю пробелом, не считается правилом? Может быть.
Работайте над Brain-Flak Classic
У нас уже были все эти парены, поэтому я подумал, что отправлю нас по пути к Brain-Flak Classic.
источник