Здесь мы видим много проблем, требующих функции для создания последовательности из OEIS . В то время как эти задачи забавны, как программист я вижу возможность для автоматизации.
Ваша задача состоит в том, чтобы создать программу, которая берет индекс последовательности (например, A172141 ) и некоторое целое число n (например, 7) и извлекает соответствующее значение из соответствующей веб-страницы.
I / O
Как уже упоминалось, ваша программа должна взять индекс последовательности и некоторое значение n в качестве входных данных и вывести n-й член в этой последовательности. Вы принимаете любой индекс в B-файлах последовательности . Если индекс больше, чем самый большой индекс, указанный в B-файлах, вы можете выбросить исключение или вывести все, что захотите (это не в тестовых примерах). Стандартные методы ввода и вывода разрешены.
Ограничения на веб-использование
Вы не должны заходить на другие сайты, кроме https://oeis.org и http://oeis.org . Это включает в себя сокращения URL, ваш личный веб-сайт и сам этот вопрос. Если вы хотите получить доступ к другому веб-сайту и считаете, что это несправедливо, вы можете оставить комментарий, и я вынесу решение.
счет
Это вызов кода для гольфа, поэтому программа с наименьшим количеством байтов, использованных в исходном коде, выигрывает. Стандартные лазейки запрещены.
Тестовые случаи
Предполагая, что ваша машина имеет правильное подключение к Интернету и серверы OEIS работают и работают, следующие входы и выходы должны соответствовать
A172141, 7 -> 980
A173429, 4 -> 276
A190394, 6 -> 16
A002911, 11 -> 960
A052170, 3 -> 24
A060296, 8 -> 3
A178732, 5 -> 27
A000001, 1 -> 1
A000796, 314 -> 3
A001622, 162 -> 8
A002206, -1 -> 1
Чаевые
- При доступе к B-файлам
http://oeis.org/b<A-number>.txt
будет перенаправлен на соответствующий B-файл.
oeis.org/A000796/b000796.txt
а неoeis.org/A000796/list
. Является ли Фомер тем, что вы подразумеваете под B-файлами ? В этом случае упоминание о смещении является излишним.Ответы:
Bash + coreutils + w3m,
514542 байтаСпасибо @EamonOlive за 3 байта в гольфе!
Пример запуска
Как это работает
w3m - это текстовый веб-браузер, который отображает как HTML, так и обычный текст в удобочитаемом формате. В отличие от curl , он следует перенаправлениям по умолчанию (это необходимо, так как
oeis.org/bxxxxxx.txt
перенаправляет наoeis.org/Axxxxxx/bxxxxxx.txt
), не генерирует случайные выходные данные для STDERR и имеет трехбайтовое имя.Команда
желаемый URL, где
${1:1}
первый аргумент командной строки без его первого символа.Вывод передается в команду
который извлекает желаемый результат.
s/^$2 //p
Попытки заменить^$2
(начало строки, затем второй аргумент командной строки, затем пробел) пустой строкой. Если замена прошла успешно,p
печатается ее результат. После этогоd
безоговорочно удаляет шаблон, чтобы предотвратить печать всего ввода sed .источник
oeis.org/b${1:1}.txt
вместоoeis.org/$1/b${1:1}.txt
sed -n ...
, но это был бы еще один персонаж.-n
, двойные кавычки могут быть заменены на пробел, для того же количества байтов.Perl, 59 байт
Необходимо
-M5.010
или-E
бежать. Например :Сэкономили 8 байт благодаря ответу @Dennis , удалив
http://
, как он и сделал.источник
CJam, 36 байт
Пример запуска
источник
Python 2,
125118113 байтов712 байтов сэкономлено благодаря ЛиннХорошо, вот мой путь к моей собственной проблеме. Это, вероятно, неоптимально, но я думаю, что проделал довольно приличную работу. Он создает анонимную функцию, которая принимает строку и целое число в качестве аргументов и возвращает строку в качестве результата, либо выдает ошибку, если индекс выходит за пределы диапазона.
Это можно превратить в полную программу размером 124 байта.
Это предлагает пользователю для ввода. Сначала запросите индекс, а затем номер А последовательности.
источник
import re,urllib2 as u;lambda x,y:re.search("%d (.*)\n"%y,u.urlopen("http://oeis.org/b%s.txt"%x[1:]).read()).group(1)
lambda x,y:re.split("%d (.*)"%y,u.urlopen("http://oeis.org/b%s.txt"%x[1:]).read())[1]
короче еще!Python 3,
153146135 байтов7 байтов благодаря FryAmTheEggman.
6 байтов благодаря Eamon Olive.
5 байтов благодаря Роду.
Назовите это так:
Запустите на компьютере, где по умолчанию используется utf-8.
источник
A%s
чтобы%s
и затем первымa[1:]
вa
?PHP 5.6,
9392 байтаЭтот довольно прост. Потяните страницу с помощью
file()
, получите строку в$line - 1
(0-index), взорвитесь в пространстве и распечатайте второй элемент массива из этого.источник
Nim ,
123115113 байтЭто лямбда-выражение; чтобы использовать его, он должен быть передан в качестве аргумента в процедуру тестирования. Полная программа, которую можно использовать для тестирования, приведена здесь:
Ожидается ввод в виде двух строк. Пример использования:
Мы используем
httpclient
«sgetContent
прок , чтобы получить б-файл OEIS, а затем использовать регулярное выражение дляfind
строки с индексом.find
возвращаетOption[RegexMatch]
, поэтому мы используемget
для получения значения изOption
.echo
автоматически переводит строки, поэтому мы оставляем их безисточник
Mathematica + OEIS.m , 31
пример использования:
%[A172141,36]
Математика, 85
пример использования:
%["A002206",-1]
источник
R
9489 байтИспользование
sprintf
вместоpaste0
результатов в том же bytecount:Пять байтов сохранены благодаря планнапу .
источник
url
, аргументfile
изread.table
может быть URL в виде строки символов.Clojure, 103
re-find
находит вектор групп регулярных выражений первого совпадения, он используется как функция и1
получает строку в позиции1
.read-string
преобразует строку в int. Я не уверен на 100%, всегда ли это регулярное выражение находит правильную строку.источник
R, 87 байт
Создайте строку URL с регулярными выражениями вместо
paste
илиsprintf
.источник
Node.js +
request
, 109 байтПринимает идентификатор последовательности и номер.
источник
Юлия, 88 байт
Гольф с некоторой помощью @Dennis!
Убедитесь, что вы
Requests.jl
установили перед запуском.источник
ListSharp , 266 байт
Грустно, когда языку, созданному для очистки веб-страниц, нужно так много строк, потому что вложенные операторы в ListSharp запрещены
источник