Вход:
Два десятичных целых числа m
и n
, соответственно, дают количество строк и столбцов таблицы.
m
и n
больше или равно 1.
Выход :
Таблица в HTML, содержащая m строк и n столбцов.
Таблица должна отображаться современным браузером на ваш выбор. Большинство браузеров будут отображать все правильно, даже если теги не закрыты. Правильный отступ и интервал не обязательны.
В каждой ячейке должен быть хотя бы один печатный символ (без пробелов).
Ячейки в первой строке должны использовать <th>
теги, в то время как ячейки в следующих строках должны использовать <td>
теги.
Условие выигрыша:
Это код-гольф, поэтому выигрывает самый короткий исходный код для каждого языка.
Пример ввода:
2 3
Пример вывода:
<table>
<tr>
<th>A</th>
<th>A</th>
<th>A</th>
</tr>
<tr>
<td>A</td>
<td>A</td>
<td>A</td>
</tr>
</table>
или :
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
code-golf
code-generation
картошка
источник
источник
Ответы:
APL (Dyalog Unicode) с MiServer 3.0 ,
3130 байт SBCSПолная программа. Запрашивает стандартный ввод для двухэлементного списка
[m,n]
и выводит строгий XHTML на стандартный вывод.Пример сеанса:
Попробуйте онлайн!
Объяснение:
(
…).Render
Визуализируйте следующий элемент HTML:⎕NEW _.Table (
…)
Новая таблица со следующими параметрами:(
…) ⍬ 1
Следующий контент, без специального стиля, 1 строка заголовка:⎕⍴0
оцениваемый вход изменяет ноль (т. е. m-строка, n-столбцовая матрица нулей)источник
JavaScript (ES6), 70 байт
Сохранено 2 байта благодаря @RickHitchcock
Принимает ввод в синтаксисе карри
(m)(n)
.Попробуйте онлайн!
демонстрация
Показать фрагмент кода
источник
Python 2 , 57 байт
Попробуйте онлайн! Предполагается
m
, не ноль.источник
Холст , 31 байт
Попробуй это здесь! или попробуйте это визуализировать!
После исправления 2 ошибок (ಠ_ಠ) в интерпретаторе, 30 байтов тоже работает
источник
JavaScript, 65 байт
источник
05AB1E , 30 байтов
Попробуйте онлайн!
объяснение
источник
Stax , 28 байт
Запустите и отладьте его
Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
Java 10,
139133102 байтаПопробуйте онлайн.
Объяснение:
источник
(m,n)->{var l="<tr>";for(;n-->0;)l+="<td>A";var s="<table>"+l.replace('d','h');for(;--m>0;)s+=l;return s;}
(106 байт) Я нашел этот интересным, но не стоит, учитывая ваш текущий счет. Вы, вероятно, можете немного поиграть в свой ответ, используя такие идеи, как изменчивостьm
.m
, но из - за<th>
/<td>
различий это не имеет значения. Мне все еще нужно проверить, является ли это первой итерацией внешнего цикла, в этом случае мне нужны обаj
иm
, и мне нужно сделать внутренний цикл несколько раз, в этом случае мне нужноi
иn
. Вместо того, чтобы идти вверх от 0 и проверять,j<2
я мог бы пойти назад и проверитьi>m-2
, но это будет +1 байт вместо -1. Ваш подход использования двух разделенных циклов с возможностью измененияm
иn
, тем не менее, действительно интересен. :)APL (Dyalog Unicode) ,
4238 байт SBCS-4 благодаря нгн.
Полная программа. Запрашивает стандартный ввод для двухэлементного списка [m, n] и печатает незамкнутые теги в стандартный вывод.
Попробуйте онлайн!
⊂'<th>A'
приложите эту строку, чтобы рассматривать ее как целое⎕⍴
запрос на размеры и циклически г eshape на одну ячейку с матрицей такого размера…⍀
кумулятивно вставьте следующую функцию между каждой вертикальной парой ячеек:{'d'}@3
игнорировать верхнюю ячейку; местоd
на 3-й позиции в нижней ячейке'<tr>',⍤1
добавьте эту строку в каждую строку∊
ε NLIST (Flatten)'<table>',
добавить эту строкуисточник
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
и...@1
->...⍀
C (gcc) ,
107999897 байтПопробуйте онлайн!
-8 байт благодаря картофелю
-2 байта благодаря потолку
s
Массив должен быть объявлен как массив не указатель в противном случае он не будет редактируемым (мы устанавливаем первый час на рекламу). Большинство браузеров даже не заботятся о правильности вашего закрывающего тега, поэтому мы просто закрываем все теги с помощью</t>
.источник
</t>
что появляется дважды и -8 байт.R , 73 байта
Попробуйте онлайн!
Сохранено 7 байтов с грязным хаком - замените «rep» на «<».
источник
Хаскелл ,
109107103 байтовТак много скобок ... Спасибо @nimi за два байта (и потерю универсальности)!
Попробуйте онлайн!
Без конечных тегов прямая реализация выигрывает в 87 байтах ( попробуйте онлайн ):
источник
APL + WIN,
68 6356 байтВсего 12 байтов сохранено благодаря Адаму
Запрашивает количество строк, за которыми следует число столбцов, и выводит закрывающую опцию:
источник
∊
ни заключительные парены,t,,((⎕-1),n←⎕)⍴r
ни первые две запятые.h
иr
в основное выражение:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
для тела. Каждый ряд нуждается в<tr>
.Сетчатка ,
5654 байтаПопробуйте онлайн! Изменить: Сохранено 2 байта благодаря @CowsQuack. Объяснение: На первом этапе сначала используется умножение строк Retina 1 для генерации соответствующего количества ячеек, а затем для генерации соответствующего количества строк. Затем второй этап меняет первый ряд
td
s наth
s.источник
.
вместо\d
Древесный уголь , 33 байта
Попробуйте онлайн!
объяснение
источник
К, 58 байт
K версия - это то, что включено в
KDB+ 3.5 2017.11.30
.Порт Питона ответ выше. Заканчивается на 1 байт длиннее из-за необходимости зачисления и выравнивания несколько раз.
источник
Perl 5
-p
,6554 байта-11 байт благодаря напоминанию @ msh2108
Попробуйте онлайн!
источник
.'</table>'
.C # (.NET Core) , 130 байт
Попробуйте онлайн!
источник
PowerShell Core ,
7268 байтПопробуйте онлайн!
Вот мои тесты и ожидаемые результаты (Cf, TIO)
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
<table><tr><th>A<th>A<th>A
<table><tr><th>A<th>A<tr><td>A<td>A<tr><td>A<td>A<tr><td>A<td>A
<table><tr><th>A<th>A<th>A<th>A<th>A<th>A<th>A<th>A<tr><td>A<td>A<td>A<td>A<td>A<td>A<td>A<td>A
Спасибо, @ mazzy , за -4 байта!
источник
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 байт
Попробуйте онлайн!
источник
Дротик ,
4563 байтаРабочий раствор:
Попробуйте онлайн здесь!
Лямбда / анонимная функция принимает
m
и вn
качестве параметров отображает вывод вSTDOUT
.Так как таблицы с незакрытой
<table>
,<tr>
,<th>
, и<td>
теги по- прежнему делают в современных браузерах (напр., Chrome), выход действителен.Старое (сломанное) решение:
Моя первая попытка забыла переключиться на
<td>
после первого ряда:Спасибо @Lynn за указание на это.
источник
Google Sheets, 66 байт
Вход находится в ячейке
A1
иB1
.В этом нет ничего особенного; это просто вложенные
Rept
функции.Это действительно предположить ,
m > n > 0
и что они оба целые числа.источник
Желе ,
3332 байтаПолная программа приема
rows
,columns
которая печатает результат.Попробуйте онлайн!
хм, также 32, используя таблицу:
источник
J, 64 байта
Еще один порт ответа Python:
источник
PHP, 161 байт
Попробуйте онлайн
Код
объяснение
PHP, 193 байта
Полная структура таблицы
забыта<tfooter>
<thead>, <tbody>..etc..
Попробуйте пример функции
объяснение
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Массив со всеми тегами для таблицы это устроится , а затем
str_repeat
ряд отсылая к индексу в массиве записываются, а затем вstrtr
строку плюс массив передаетсяисточник
YaBasic , 124 байта
Анонимная функция, которая принимает входные данные в виде целых чисел, разделенных пробелами, и выводит их на консоль.
Попробуйте онлайн!
источник
Forth (gforth) , 86 байтов
Попробуйте онлайн!
объяснение
источник
Морковь ,
7751 байт(Работая над этим, я обнаружил ошибку с
h
неработающим и исправил ее)Гольф несколько байтов, сокращая html, а также используя «split, join» вместо «replace»
Попробуйте онлайн! , используйте параметр командной строки
-d
чтобы увидеть AST (Примечание: здесь используется новый интерпретатор узлов, поэтому более старая версия на веб-сайте не может его запустить.)Эта программа принимает входные данные с 0 индексами и в обратном порядке, из-за странной природы Моркови, таким образом
3 2
печатая таблицу 3 × 4.Запустите программу так,
./carrot -f prog.carrot input.txt
В основном создает строку заголовка, затем строки данных в другой ячейке сада (2D-лента) и объединяет их вместе.
Морковь работает на двухмерной ленте, которая называется сад. Каждая клетка в саду состоит из трех стековых режимов: string, float, array. Для каждого режима есть значение, называемое «стеком» (примечание: неправильное обозначение). Эти стеки начинаются пустыми. Когда ячейка находится в определенном режиме, следующие команды будут влиять на стек, соответствующий этому режиму, например, в режиме с плавающей запятой, операции будут влиять на смещение стека. И конечно, есть команды для переключения между режимами. Режимы важны, потому что каждый оператор может быть перегружен для каждого режима и каждого типа аргумента.
Кроме того, есть два дополнительных режима (они влияют только на команды, а не непосредственно на стек), обычный режим и режим каретки. Нормальный режим работает нормально, где есть операторы, принимающие аргументы и напрямую влияющие на стек. В режиме каретки (почти) каждый символ интерпретируется буквально как строка, а затем добавляется / добавляется в соответствии со стеком. Режим каретки запускается / заканчивается каретками (добавление) или нижними каретками (предварительно).
Морковь начинается в клетке в саду, в режиме стековой строки и в режиме каретки.
Начиная с режима каретки, строка
<th>A
добавляется в изначально пустую строку стека. Затем следует*
команда, которая дублирует его$
, ввод, время. Затем<tr>
добавляется к строке стека с помощью нижнего кареткиv
. Это создает строку заголовка таблицы.Чтобы создать строки данных, мы дублируем заголовок в другую ячейку.
l
перемещает IP в правую пустую ячейку и+
добавляет(^h)
строку в ячейку слева (по сути, копируя ее в ячейку справа).()
запускает подоболочку, новую программу Carrot с почти той же лентой, и^
выходит из режима каретки, чтобы мы моглиh
получить строку в левой ячейке. Это затем*
дублируется($^F- 1)
следующим вводом минус 1 раз.Находясь в правой ячейке,
A
устанавливает для массива этой ячейки его разбивку по стеку"h"
.S
присоединяет массив стека с помощью"d"
и устанавливает строку стека в это значение.A"h"S"d"
на самом деле просто заменяетh
s наd
s, чтобы сформировать строки данных. Теперьh
переместимся в левую стартовую ячейку.Теперь мы добавляем строку стека ячейки справа к этой ячейке, используя
+(^l)
. Осталось только добавить<table>
тег, поэтому мы делаем это,v
добавляя его.источник
К (нгн / к) , 51 байт
Попробуйте онлайн!
источник
Powershell, 63 байта
сохранить как
new-mntable.ps1
. Тестовый скрипт:вывод (дополнительные пробелы необязательны):
Powershell, 65 байт,
-replace
сохранить как
new-mntable.ps1
. Тестовый скрипт:выход:
Как это работает:
'<table>h'+'d'*--$args[0]
- создать строку как<table>hddd...
'h|d'
- поискh
илиd
символы в строке для замены'<tr>'+'<t$0>A'*$args[1]
- заменить каждый символ строкой<tr><t$0>A<t$0>A...
$0
захваченныйgroup[0]
- полукокса в-replace
.Powershell, 65 байт,
scriptblock
сохранить как
new-mntable.ps1
. Тестовый скрипт:выход:
источник