function getURL(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:getURL(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),useData(answers)}})}function getOwnerName(e){return e.owner.display_name}function useData(e){var s=[];e.forEach(function(e){var a=e.body.replace(/<s>.*<\/s>/,"").replace(/<strike>.*<\/strike>/,"");console.log(a),VALID_HEAD.test(a)&&s.push({user:getOwnerName(e),language:a.match(VALID_HEAD)[1],score:+a.match(VALID_HEAD)[2],link:e.share_link})}),s.sort(function(e,s){var a=e.score,r=s.score;return a-r}),s.forEach(function(e,s){var a=$("#score-template").html();a=a.replace("{{RANK}}",s+1+"").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SCORE}}",e.score),a=$(a),$("#scores").append(a)})}var QUESTION_ID=58047,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],answer_ids,answers_hash,answer_page=1;getAnswers();var VALID_HEAD=/<h\d>([^\n,]*)[, ]*(\d+).*<\/h\d>/;
body{text-align:left!important}table thead{font-weight:700}table td{padding:10px 0 0 30px}#scores-cont{padding:10px;width:600px}#scores tr td:first-of-type{padding-left:0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="scores-cont"><h2>Scores</h2><table class="score-table"><thead> <tr><td></td><td>User</td><td>Language</td><td>Score</td></tr></thead> <tbody id="scores"></tbody></table></div><table style="display: none"> <tbody id="score-template"><tr><td>{{RANK}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SCORE}}</td></tr></tbody></table>
[1 2 3 6]
для последнего теста. Это может также напечатать[6 3 2 1]
,[1.0 2.0 3.0 6.0]
или[6.0 3.0 2.0 1.0]
?Ответы:
Pyth, 10 байт
демонстрация
Для каждой степени он генерирует список всех чисел вплоть до входных данных, взятых для этой степени, а затем проверяет, находится ли этот вход в списке.
источник
Хаскелл, 38
Довольно просто. Понимание списка находит значения,
b
для которых вводn
появляется среди[1^b, 2^b, ..., n^b]
. Достаточно проверитьb
в диапазоне[1..n]
.источник
Python 2, 53
Грубая сила все комбинации базисов в показателях в [0, n-1] и базисов в [1, n].
источник
Python 3, 56 байт
Это действительно неуклюже. Проверяет,
i
дает ли каждый потенциальный корень число целое, округляя его, получая его мощностьi
и проверяя, соответствует ли оно оригиналу.Непосредственно проверить, что корень является целым числом, сложно, потому что числа с плавающей запятой дают такие вещи, как
64**(1/3) == 3.9999999999999996
. Округляя его до целого числа, давайте проверим, вернется ли возврат к исходному значению. Спасибо ypercube за предложение об экономии 1 байта.У feersum есть более короткое и умное решение . Вы все должны действительно поддержать это.
источник
round(n**(1/i),0)**i==n
?0
также точность по умолчанию для раунда, это экономит байт.Pyth,
111012 байтПроверяет все возможные комбинации полномочий. Очень медленно.
источник
CJam, 23 байта
Это работает, беря простую факторизацию n и вычисляя пересечение делителей всех показателей.
Это немного дольше, чем мое другое решение , но я ожидаю, что оно будет работать (и закончится мгновенно) для всех целых чисел от 2 до 2 63 - 1 .
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
APL, 17 байт
Моя первая программа APL; Гольф предложения приветствуются.
источник
pow(pow(7,3),1./3))
я получаю6.99999999999999
в C или Python. Это потому, что точность теряется при расчете 1 / A.JavaScript (ES5),
73 байта,81 байт,79 байтов,75 байтовПроверяет, равна ли ближайшая целочисленная степень возможного корня
n
.~~(.5+...)
эквивалентноMath.round(...)
для выражений в диапазоне целых чисел (от 0 до 2 ^ 31 - 1).Изменить: Использовать ленивую
&&
логику вместо того,if
чтобы брить 2 байта и добавил подсказку для ввода, так как вопрос добавил пояснение. Ранее предполагалось, что вход был сохранен вn
.Редактировать 2: Изменено,
~~(.5+...)
чтобы.5+...|0
сохранить два байта, избегая группировки.Редактировать 3: Удалено,
var
чтобы сохранить 4 байта. В нестрогом режиме это приемлемо.источник
p=Math.pow
в быстрое сохранение 1 байтvar
требуетсяfor
вместоprompt
..Брахилог , 8 байт
Попробуйте онлайн!
Принимает входные данные через свою входную переменную и генерирует каждую мощность через свою выходную переменную в порядке возрастания, как требуется, в отличие от старого решения,
≥ℕ≜^↙.?∧
которое, как оказалось, имеет точно такую же длину.У меня нет никаких строгих оснований утверждать, что каждый показатель не больше, чем входные данные, но для фактического завершения программы его необходимо ограничить.
ḋḅlᵛf
это гораздо более короткое (не генераторное) решение для всех заданных тестовых случаев, но оно терпит неудачу, если вход не является степенью произведения различных простых чисел. (Если подумать, поскольку все тестовые случаи являются степенями простых чисел, ониḋlf
тоже работают ...) Лучшее, что я придумал, чтобы спасти идею,ḋḅlᵐḋˢ⊇ᵛ×f
- это 10 байтов.источник
Желе , 6 байт
Попробуйте онлайн!
источник
05AB1E , 3 байта
Попробуйте онлайн!
Порт желе несвязанного ответа .
источник
JavaScript ES7, 66 байт
Принимает преимущество экспериментальных постижений массива. Работает только на Firefox.
Возможен гольф. Я, вероятно, постараюсь сжать выражения немного короче и, надеюсь, найду альтернативу длинному
Array(n).keys()
синтаксису.Может быть короче, но JavaScript имеет ужасную точность с плавающей точкой.
источник
CJam, 20 байт
Для ввода n это вычисляет log b n для всех b, меньших или равных n, и сохраняет результаты, которые являются целыми числами.
Это должно работать для всех целых чисел от 2 и 9,999 . Время выполнения примерно O (n) .
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Рубин, 50
Печать на экране.
Рубин, 57
Возвращает массив.
В тестовой программе:
Вычисляет каждый корень и проверяет их по модулю 1, чтобы увидеть, если остаток меньше, чем 1e-8. Из-за ограниченной точности некоторые действительные целочисленные корни вычисляются как форма 0.9999 .., следовательно, необходимо добавить к ним 1e-9.
До n-го корня из n вычисляется, что является полным перебором, но, казалось, самый короткий способ написать бесконечный цикл.
источник
Stax , 6 байт
Запустите и отладьте его
Все делители gcd показателей степени в простой факторизации. Это так же, как алгоритм желе.
источник
DC, 104 байта
Входные данные берутся из терминала, вывод распечатывается, а также в стеке.
Потому что это использует? оператор, вам нужно использовать
dc -e "<solution>"
илиdc <file with solution in it>
.Никто никогда не видит мои ответы, не говоря уже о том, чтобы голосовать за них, но я действительно просто наслаждаюсь решением проблем в Вашингтоне. Пока что это наименее эффективное решение в этой ветке, но я все равно решил написать.
начальный материал
Макро, чтобы поднять основание для всех сил, пока результат не больше, чем мишень или равен мишени
Макрос для сохранения допустимого значения экспоненты, найденного из вышеупомянутых макрокоманд экспоненты, в другой стек
Макро запустить 2x выше макро (макро) с помощью всех баз от 2 до нашего целевого числа
Macro для печати значения из стека ф
источник
Рубин , 46 байт
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 93 байта
Попробуйте онлайн!
источник
Japt , 10 байт
Попытайся
источник