Напишите самую короткую функцию, чтобы преобразовать IP-адрес в его целочисленное представление и вывести его как целое число.
Чтобы изменить адрес IPv4 на его целочисленное представление, требуется следующий расчет:
- Разбейте IP-адрес на четыре октета.
(Octet1 * 16777216) + (Octet2 * 65536) + (Octet3 * 256) + (Octet4)
Пример ввода
192.168.1.1 10.10.104.36 8.8.8.8
Пример вывода
3232235777 168454180 134744072
code-golf
conversion
Кайл Розендо
источник
источник
Ответы:
PHP - 21 символов
источник
MySQL - 20 символов
источник
Рубин (без встроенных / eval) - 47
Тестовое задание:
источник
C: 79 символов
РЕДАКТИРОВАТЬ: удален C ++, не будет компилироваться без заголовков; с помощью GCC вызовы функций
printf
иstrtol
вызывают встроенные функции, поэтому заголовки можно пропустить. Спасибо @ugoren за советы. Это будет скомпилировано как есть без дополнительных опцийgcc
.EDIT2:
return
на самом деле избыточно :)источник
Golfscript - 16 символов
Как отдельная программа, это еще короче в 11.
Чрезвычайно просто. Оценивает входную строку (
~
) и помещает ее в массив[]
. Поскольку.
s в строке дублируют верхнюю часть стека, мы принимаем только все остальные члены в array (2%
). Теперь у нас есть массив, который в основном представляет собой базовое число 256, поэтому мы используем встроенную функцию для выполнения преобразования. (256base
).источник
{:B;{\B*+}*}:base
(хотя реальная функция перегружена для преобразования другим способом). Интересно отметить, что базовое преобразование для строк такое же, как для массивов (поскольку строки - это просто массивы без вложенности, но с другим форматом вывода).base
мой ответBefunge - 2x11 = 22 символа
Так близко, Befunge выиграет один день.
объяснение
Самая большая отличительная черта Befunge состоит в том, что вместо линейного набора инструкций, как большинство языков; это двумерная сетка односимвольных инструкций, где управление может проходить в любом направлении.
Эти персонажи меняют направление управления при попадании, это делает основной цикл.
Это вводит число и помещает его в стек (
&
), выталкивает два верхних значения из стека, добавляет их и помещает обратно в стек (+
и помещает ), вводит один символ и помещает его значение ascii в стек (~
), затем помещает 1 в стек и добавляет их (1+
).Интерпретатор, который я использовал, возвращает -1 для конца ввода, некоторые возвращают 0 вместо этого, чтобы
1+
часть могла быть удалена для них.#
Вызывает следующий символ , который будет пропущен, то_
щелчки значение из стека , и если он равен нулю посылает управляющий вправе, в противном случае посылает его влево. Если значение было равно нулю, оно.
выталкивает значение из стека и выводит его как целое число и@
останавливает программу. В противном случаеv
отправляет управление обратно в цикл возврата.Это просто умножает верхнее значение стека на 256 и возвращает управление к началу.
источник
>v<^
который на самом деле является основным циклом в этой программе. Я предполагаю, что в этом случае элемент управления фактически не проходит через эти последние 3 пробела внизу, но я считаю, что проще всего просто считать программы Befunge как наименьший ограничивающий прямоугольник; и если вы попытаетесь посчитать поток управления, у вас возникнут проблемы с самоизменяющимися программами.Рубин (40)
->
источник
to_i 16
какhex
сохранить некоторые символы.Рубин - 46 символов
источник
Golfscript - 21 символ
источник
Python
5645источник
C ++ - много символов
источник
PowerShell
6661Вариация на ответ Джои:
источник
AWK в ~ 47 символов
Первый таймер здесь ... Хм, не знаю, как считать это, но без "эха" это 47 символов в AWK. (Не совсем пугающий гольф, но он в дыре.)
Для #tbt тоже целый день рано, так что я действительно встретил график !!! * 8-)
Баннерный день.
источник
{print $1*16777216+$2*65536+$3*256+$4}
. Конечно, вам нужно переместить разделитель полей в программу, а не указывать его как флаг.Баш - 46
Содержание
Вы найдете 4 разных варианта игры в гольф:
Новая версия! 2018-11-15 Больше игры в гольф, 46 символов
объяснение
$_
для большего количества игры в гольф.${1//./ }
заменит все точки.
пробелами.
printf
будет рендерить что-то вроде192<<(_-=8)|168<<(_-=8)|1<<(_-=8)|1<<(_-=8)|
0
после последнего ИЛИ|
и_
до 32 . Bash будет читать конструкцию слева направо, так что$((_-=8))
сделайте24
в 1-й смене ,16
во второй и так далее.В бою:
Для развлечения: пытаюсь получить
$_
контент, после этого:В функции:
или в цикл: -> 60
Баш (версия 4.1 +): 47
Первый пост
Объяснение:
${1//./ }
заменит все точки.
пробелами.
set --
установить позиционные параметры ($@=($1 $2 $3...)
)set -- ${1//./ }
будет разделены$1
точками и множество$1
,$2
,$3
и$4
если строка с указанной3
точкой (без пробелов).В бою:
или в функции:
или в цикл: -> 61
В бою:
Другая версия по-другому: 65
Образец:
В цикле (+14): 82
* или немного более некрасиво: 70 *
где
printf
дать некоторую строку, как|192<<24 |168<<16 |1<<8|1<<24 |0<<16 |0<<8
мы должны, наконец, разрезать<<2...
.в гольф
mapfile
, дольше: 68или с петлей: 82
источник
set --
партией. Благодарю.set -- foo bar
заполнит$@
с обув как$1
и бар , как$2
.Windows PowerShell, 70
Наивный подход:
С использованием System.Net.IPAddress: 76
Тестовое задание:
источник
Befunge-93 - 36 персонажей
источник
Perl: DIY (для пользователей). (40)
# Использовать значение в $ i
Функция DIY (65):
источник
split'.'
вместоsplit/\./
split q{.}
бы обойти необходимость избегать кавычек оболочки: /Haskell - 14 символов
Использование в GHCi:
Единственная проблема заключается в том, что вы должны ставить пробелы слева или справа от точки, в противном случае числа будут интерпретироваться как числа с плавающей запятой.
источник
C # - 77 символов
источник
JavaScript (45 символов)
Требуется поддержка
.reduce()
метода Array, представленного в ES5, и функций стрелок .источник
Powershell,
4743 байтаТестовый скрипт:
Выход:
источник
C # - 120 символов
Мой первый код гольф - будь нежным;)
источник
D: 84 персонажа
источник
Python 3,2 (69)
источник
PHP (без встроенных / eval) - 54
источник
<?php
, не только<
?Perl, 14 символов:
источник
Stax , 9 байт
Запустите и отладьте его
источник
05AB1E , 5 байтов
Попробуйте онлайн!
источник
Perl 6 , 16 байт
Попробуйте онлайн!
источник
C (gcc)
-m32
/ POSIX, 33 байтаПопробуйте онлайн!
На большой обратный порядок байт платформы, вы могли бы просто определить макрос
-Df=inet_aton
для 13 байт .источник