Первая строка состоит из ceil(n/2)
элементов, где каждый элемент:<space><odd-number><space>
Вторая строка сделана с ceil(n/2)
элементами, но каждый элемент / \
только.
Вы можете предположить n >= 0
и n <= 10
.
Примеры
Вход: 3
1 3
/ \/ \
Вход: 10
1 3 5 7 9
/ \/ \/ \/ \/ \
Пример в Python 3, 103 байта:
lambda a:print("".join([" "+str(i)+" "for i in range(1,a+1,2)]+["\n"]+["/ \\"for i in range(1,a+1,2)]))
Самый короткий код в байтах побеждает :)
<space><odd-number><space>
, но контрольные примеры не имеют пробела после последнего нечетного числа. Это необязательно? Кроме того, вывод дляn=0
двух пустых строк?Ответы:
05AB1E ,
19151412 байт05AB1E использует кодировку CP-1252 .
Сохранено 4 байта благодаря Аднану . Экономия
2 байта благодаря carusocomputing
Попробуйте онлайн!
объяснение
источник
Ï
ДОЛГО СУЩЕСТВУЕТ ?! Это кажется очень полезным.LDÉÏ
так же, какÅÉ
и„ ýðì
может быть замененоðì)»
:).)
, не так ли?ÅÉðìDg…/ \×»
используетDg
вместо¹;î
другого байта сохранения.Пайк, 16 байт
Попробуй это здесь!
17 байт и больше
Попробуй это здесь!
Это использует ИМХО УДИВИТЕЛЬНЫЙ алгоритм для проверки правильности выравнивания первой строки.
Это заменяет все символы в строковом списке пробелами.
~B
содержит все символы на языке Brain ****, и я впервые использую эту переменную.Программа
`~Bd.:
делает это:источник
Python 2, 63 байта
Маленькая хитрость для первой строки: она не печатает четные числа, а принимает их как пустую строку, что приводит к появлению пустого пробела (там будет 0) и двойных пробелов между числами без каких-либо изменений в диапазоне, Недостатком является ведущее место в четных
n
источник
Python
23,67656360 байтНичего слишком сумасшедшего здесь,
я думаю, что первый раздел, вероятно, можно сделать короче, но я не совсем уверен, как. Я использую тот факт, что в этом случае-~n/2
будет работать дляceil
.Ниже представлены альтернативные 61 и 65-байтовые решения в Python 2:
Спасибо Роду за сохранение 2 байта и Artyer за сохранение другого байта путем переключения версии :)
источник
%(tuple(...))
на%[*...]
, но вам придется это сделать-~n//2
range
к списку, потому что 3 -range
это как Python 2xrange
.tuple()
(*<iterable>,)
приведение к кортежу в Python 3. Это сохраняет 1 байт, хотя после превращенияn/2
вn//2
Python 3.JavaScript (ES6), 55 байт
Обратите внимание на пробел в конце второй строки.
источник
.replace
может быть лучше, но я не удосужился проверить ...Python 2, 53 байта
Использует ограничение
n <= 10
для генерации верхней строки, отрубая кусок из жестко закодированной строки.Выходы от 1 до 10:
Выход для 0 - две пустые строки.
источник
Vim,
735956 байтЭто действительно большое количество байтов IMO для простой проблемы. Я чувствую, что упускаю что-то очевидное.
Попробуйте онлайн!
непечатные:
источник
:s;.;/ \\;g
. 2) в вашей второй команде замещения вы можете оставить поиск пустым, и он будет использовать ваш последний поиск (что так и происходит). Также&
эквивалентно\0
и на один байт короче. Таким образом, вы получаете:s// & /g
Mathematica, 65 байт
Анонимная функция. Принимает число в качестве ввода и возвращает строку в качестве вывода. Символы Unicode, соответственно, это U + 2308 ЛЕВОЙ ПОТОЛОК для
\[LeftCeiling]
и U + 2309 ПРАВОЙ ПОТОЛОК для\[RightCeiling]
.источник
WinDbg, 100 байт
Ввод осуществляется путем установки значения в псевдорегистре
$t0
.Похоже, здесь меньше всего просто напечатать строку в процессе ее создания, а не пытаться сначала ее построить и отобразить все целиком. У меня было бы более короткое решение, если бы WinDbg позволял мне писать по адресу
0
.Как это устроено:
Выход для каждого значения
n
:источник
> <> (FISH),
69606855 байтовВставьте его в этот онлайн-переводчик!
Число 5 в первой строке - это ваше введенное значение (жестко закодировано как 5, заменено на 0-a или i для ввода пользователем).
Редактировать 1: перемещение новой строки перенесено в пробел первой строки (было пустым), чтобы сэкономить 9 байт на месте новой строки.
Редактировать 2: Как отметил пользователь7150406, вывод был неправильным (печать без пробелов), это было исправлено с потерей 8 байтов.
Правка 3: полностью изменила логику, нет смысла проверять, не является ли число нечетным - лучше положить все числа в стек и удалять каждую вторую. Байт сохранен 13!
источник
Ява,
118112 байтИзменить: Сохранено 6 байт благодаря @peech
Golfed:
Ungolfed:
Тестирование:
источник
i
в первом цикле for, это может выглядеть такfor(; i < n; i++)
. С этим изменением вы можете играть в гольф еще дальше:o += i + " ";
изменения вo += i++ + " ";
и для петли становятсяfor(; i < n; )
. Это если вы хотите сохранить, если заявление. Вы можете изменить свой приращение i на ii += 2
и удалить целое выражение if, но в этом случае мое второе предложение не применяется :) (ps: я не проверял это :))i
инициализацию изfor
цикла, но другие вещи застряли в цикле. Возможно, мне придется немного поиграть с этим :)o += i++ + " ";
:). Кстати, у вас есть крошечная ошибка в коде :) , так как Java используетfloor()
на целочисленное деление (4/3 = 1), то вы должны сделать это так:int i = 1; n += 1; for (; i < n; i += 2) { ... jada jada ... }
. если вы увеличиваете i на ii += 2
, вам не нужно это, если оператор проверяет четность. Это также сохраняет еще 3 байта :) попробуйте здесь: ideone.com/ekaUUHfloor
причудливость деления, когда играл с какой-то Java несколько дней назад :)C # 6, 95 байт
Полная лямбда:
источник
CJam,
2623 байтаПроверь это!
-3 благодаря 8478 (Мартин Эндер)
источник
Sri,:)2%_S2**N@,"/ \\"*
+
. И я клянусь, я действительно использовалed
! ... короче чем Пиф.Game Maker Language (GM 8.0), 97 байт
Учитывая, что ввод не более 10,
chr(48+i)
будет работать вместоstring(i)
, хотя количество байтов одинаково.Удобочитаемый:
источник
Pyth,
2422 байтаСпасибо 42545 (ETHproductions) за -1 байт
Онлайн переводчик
11 тестовых случаев
источник
*lK"/ \\
\
вместо\\
:)> <> (Рыба)
526362 байтаПопробуйте онлайн!
Для использования просто поместите
n
в стек и понеслось!Многое из этого взято из ответа @ Teal-Pelican :).
Редактировать: выходные данные на самом деле не выровнены правильно ни в одной <> отправке! Крепление ...
Edit2: я должен был пожертвовать несколько байтов, но вывод на самом деле правильный сейчас.
Edit3: больше не весело с
\
/
зеркалами, и я экономлю 1 байт.Выход:
источник
C
1007977 байтисточник
R
70696858 байтисточник
Bash,
64,59,57,51,49,4845 байтовРЕДАКТИРОВАТЬ:
-s ""
на-s\
Golfed
Кусок (45 байт):
Функция (оригинальная версия) (57 байт):
Тестовое задание
источник
sed
великолепно. Не используя ни функцию, ни printf, вы сохраняете 10 байтов:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
cat
для чтения входные данные из STDIN, поскольку IMO не совсем справедливо использовать предопределенную переменную для передачи данных.$1
это просто первый параметр, передаваемый в программу. Я не думаю, что это обман, см. Meta.codegolf.stackexchange.com/questions/2447/…Befunge 93 , 64 байта
Попробуйте онлайн!
источник
Рубин
8260 байтБыстрое и грязное решение Ruby определенно могло бы быть лучше оптимизировано, если бы я был лучше с Ruby
Использование: prog.rb 10
Вывод:
редактировать: многочисленные правки и оптимизации от @Manatwork!
источник
print
→$><<
и использовать интерполяцию строк" #{x} "
. Но лучше всего было бы уменьшить количество.each
выводя на 1 - й линии непосредственно из обратного вызова и создания 2 - й линии в переменной:s="";(1..$*[0].to_i).step(2){|x|$><<" #{x} ";s+="/ \\"};puts"",s
. Или дажеputs"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*""
.Numeric#step
принимает 2 параметра, поэтому можно избежать синтаксиса длинного диапазона, который требует круглых скобок:(1..$*[0].to_i).step(2)
→1.step($*[0].to_i,2)
.JavaScript (ES6),
6664 байтаРекурсивно строит первую строку, затем добавляет вторую. Первая строка построена с наблюдением, что это просто диапазон [0 ... n] с каждым элементом n, преобразованным в пробел, если четный, или n, соединенным с пробелом, если нечетный.
источник
Python 2, 60 байт
Сохранено 6 байтов благодаря @Kade!
источник
list()
актерский состав, удаление которого приводит к 60 :)lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"e
потому что тогда он даст список целых, и он умретПакет, 107 байт
источник
Scala,
9995 байтUngolfed
источник
Рубин, 48 байтов
источник
Октава, 45 байт
f=@(n)reshape(sprintf(' /%d \',1:2:n),2,[]);
Тест:
F (8)
источник
QBIC , 35 байт
Объяснение:
источник
Китанай , 140 байт
источник
Perl, 46 + 2 (
-pl
флаг) = 48 байтС помощью:
Или 52 байта:
С помощью:
источник