HTML로 am * n 테이블 생성


22

입력 :

두 진수 정수 mn그 각각 테이블의 행과 열 수를 제공합니다. m그리고 n이상 또는 1과 동일.

출력 :

m 개의 행과 n 개의 열이있는 HTML의 테이블입니다.

테이블은 선택한 최신 브라우저로 표시 할 수 있어야합니다. 대부분의 브라우저는 태그를 닫지 않아도 모든 것을 올바르게 표시합니다. 적절한 들여 쓰기 및 간격은 선택 사항입니다.

각 셀에는 하나 이상의 (공백이 아닌) 인쇄 가능한 문자가 있어야합니다.

첫 번째 줄의 셀은 <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


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Mego

답변:


7

APL (Dyalog 유니 코드)MiServer 3.0 , 31 30 바이트 SBCS

전체 프로그램. 두 요소 목록을 표시하도록 stdin에 프롬프트 [m,n]하고 엄격한 XHTML을 stdout에 인쇄합니다.

(⎕NEW _.Table((⎕⍴0)⍬1)).Render

세션 예 :

      )xload C:\Users\Adam.DYALOG\Documents\MiServer\miserver.dws
C:\Users\Adam.DYALOG\Documents\MiServer\miserver.dws saved Wed Mar  7 17:19:40 2018
      Load ''
Development environment loaded
MiSite "C:/Users/Adam.DYALOG/Documents/MiServer/MS3/" loaded
      (⎕NEW _.Table((⎕⍴0)⍬1)).Render
⎕:
      2 3
<table id="id691498143"><thead><tr><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0</td></tr></tbody></table>

온라인으로 사용해보십시오!

설명:

().Render 다음 HTML 요소를 렌더링하십시오.

⎕NEW _.Table () 다음과 같은 매개 변수가있는 새 테이블 :

  () ⍬ 1 다음 내용, 특별한 스타일링 없음, 헤더 행 1 개 :

   ⎕⍴0 평가 된 입력이 0을 재구성합니다 (즉, m 행, n 열의 0 행렬)





3

자바 스크립트, 65 바이트

f=(m,n)=>m?f(--m,n)+'<tr>'+`<t${m?'d':'h'}>x`.repeat(n):'<table>'

document.write(f(4,3));


재귀. 좋은!
mazzy

2

05AB1E , 30 바이트

’<…È>’sF"<tr>"„hdNĀè"<tÿ>A"I×J

온라인으로 사용해보십시오!

설명

’<…È>’                           # push "<table>"
      sF                         # no-of-rows times do:
        "<tr>"                   # push "<tr>"
              „hd                # push "hd"
                 NĀ              # push the iteration counter truthified
                   è             # index into the 2-char string with this
                    "<tÿ>A"      # insert the result into the string "<tÿ>A" instead of ÿ
                           I×    # repeat this string no-of-columns times
                             J   # join the stack to a single string

2

Stax , 28 바이트

üÉ$♠═?S┼╪├8°‼←sí☼←T≡┴╜ô‼\↑0ⁿ

실행 및 디버깅

포장을 풀고 포장을 풀고 주석을 달았습니다.

"<table>"P  print "table"
"<th>A"*    "<th>A" repeated specified number of times
,D          repeat the rest of the program specified number of times
  "<tr>"p   print "<tr>" with no newline
  Q         print top of stack without popping
  .hd|t     replace "h" with "d"

이것을 실행


2

자바 10 139 133 102 바이트

m->n->{var r="<table>";for(int j=0,i;j++<m;)for(r+="<tr>",i=n;i-->0;r+=j<2?"<th>A":"<td>B");return r;}

온라인으로 사용해보십시오.

설명:

n->m->{                  // Method with two integer parameters and String return-type
  var r="<table>";       //  Result-String, starting at "<table>"
  for(int j=0,i;j++<m;)  //  Loop `j` over the rows in the range [0, `m`)
    for(r+="<tr>",       //   Append "<tr>" to the result
        i=n;i-->0;       //   Inner loop `i` over the columns in the range [`n`, 0)
      r+=j<2?            //    If `j` is 1 (first iteration):
          "<th>A"        //     Append "<th>A" to the result
         :               //    Else:
          "<td>B");      //     Append "<td>B" to the result
  return r;}             //  Return the result

약간의 오타가 있다고 생각합니다. "th"를 두 번 썼습니다.
감자

@potato 아, 맞아. 코드 자체와 TIO 링크는 정확했지만 내 설명에는 오타가 있습니다. 고쳐야합니다.
Kevin Cruijssen

(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 bytes) 나는 이것이 흥미로운 것을 알았지 만 현재 점수를 감안할 때 가치가 없습니다. 당신은 아마도 mutable과 같은 아이디어를 사용하여 약간의 대답을 할 수 있습니다 m.
Olivier Grégoire

@ OlivierGrégoire 나는 처음에 수정 가능 m했지만 <th>/ <td>차이 로 인해 중요하지 않습니다. 여전히 외부 루프의 첫 번째 반복인지 확인해야합니다.이 경우에는 j및 모두 m필요하며 내부 루프를 여러 번 수행해야합니다 . 이 경우 in. 0에서 위로 j<2올라가서 확인하는 대신 뒤로 이동하여 확인할 수 i>m-2있지만 -1 대신 +1 바이트가됩니다. 두 가지를 사용하여 귀하의 접근 방식은 수정과 루프를 분리 m하고 n있지만, 참으로 흥미 롭다. :)
Kevin Cruijssen

2

APL (Dyalog Unicode) , 42 38 바이트 SBCS

ngn 덕분에 -4입니다.

전체 프로그램. 두 요소 목록 [m, n]에 대해 stdin을 프롬프트하고 닫히지 않은 태그를 stdout에 인쇄합니다.

'<table>',∊'<tr>',⍤1{'d'}@3⍀⎕⍴⊂'<th>A'

온라인으로 사용해보십시오!

⊂'<th>A' 이 문자열을 묶어 전체로 취급하십시오.

⎕⍴ 치수 프롬프트 순환은 r에 그 크기의 행렬에 단일 셀 eshape

…⍀ 각 세로 셀 쌍 사이에 다음 함수를 누적 삽입하십시오.

{'d'}@3 상단 셀 무시 d맨 아래 셀의 세 번째 위치에 배치

'<tr>',⍤1 이 문자열 앞에 각 행을 추가하십시오

ε NLIST (편평한)

'<table>', 이 문자열 앞에




@ngn 모두 끝났습니다. 감사. 관련 .
Adám

2

C (gcc) , 107 99 98 97 바이트

i;f(x,y){char s[]="<th>A";for(puts("<table><tr>");x--;s[2]=96+puts("<tr>"))for(i=y;i--;)puts(s);}

온라인으로 사용해보십시오!

감자 덕분에 -8 바이트

ceilingcat 덕분에 -2 바이트

s배열이 아닌 포인터 그렇지 않으면 (우리는 광고에 대한 첫 번째 시간을 설정) 편집 할 수 없습니다로 배열을 선언해야합니다. 대부분의 브라우저는 닫는 태그가 올바른지 신경 쓰지 않으므로로 모든 태그를 닫습니다 </t>.


</t>두 번 나타나는 -8 바이트 를 제거하면 여전히 잘 작동합니다 .
감자

새 행 출력을 내부 루프로 이동하면 빈 행을 피할 수 있습니다. 온라인으로 시도하십시오!
ErikF


1

하스켈 , 109 (107) 103 바이트

n!i="<t"++n++'>':i++"</t"++n++">"
r#c="able"!("r"!([1..c]*>"h"!"H")++([2..r]*>("r"!([1..c]*>"d"!"A"))))

너무 많은 괄호 ... 2 바이트에 대한 @nimi (및 일반성의 손실)에 감사드립니다!

온라인으로 사용해보십시오!

종료 태그가 없으면 직선 구현이 87 바이트에서 이깁니다 ( 온라인 시도 ).

r?c="<table><tr>"++([1..c]*>"<th>H")++([2..r]*>("<tr>"++([1..c]*>"<td>A")))++"</table>"

1

APL + WIN, 68 63 56 바이트

Adám 덕분에 총 12 바이트 절약

행 수와 열 수를 묻는 메시지를 표시하고 비 폐쇄 옵션을 출력합니다.

t←⊂'<tr>'⋄'<table>'t(n⍴⊂'<th>A'),,t,((⎕-1),n←⎕)⍴⊂'<td>A'

@ Adám Too 트리거 행복합니다. 지금은 괜찮습니까?
Graham

예. 그러나 후행 t,,((⎕-1),n←⎕)⍴r또는 다음 두 개의 쉼표는 필요하지 않습니다 .
Adám

@ Adám 감사합니다. 내 하루는 더위가 아니어야합니다 (28C)!
Graham

병합 hr주요 표현으로 :'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
아담

뭔가 잘못되었습니다. <tr>본문에는 하나만 삽입 하십시오. 각 행에는가 필요합니다 <tr>.
Adám

1

망막 , 56 54 바이트

(.+) (.+)
<table>$1*$(<tr>$2*$(<td>@
T`\d`\h`^.*?r.*?r

온라인으로 사용해보십시오! 편집 : @CowsQuack 덕분에 2 바이트가 절약되었습니다. 설명 : 첫 번째 단계는 먼저 Retina 1의 문자열 곱셈을 사용하여 적절한 수의 셀을 생성 한 다음 적절한 수의 행을 생성합니다. 그런 다음 두 번째 단계는 tds 의 첫 번째 행을 s로 변경합니다 th.


입력이 공백으로 나뉘어진다는 것을 알고 있다면 .대신 대신 사용할 수 있어야합니다.\d
Kritixi Lithos

1

, 33 바이트

<table><tr>×<th>AηF⊖θ«<tr>×<td>Aη

온라인으로 사용해보십시오!

설명

<table><tr>                         Print "<table><tr>"
           ×<th>Aη                  Print "<th>A" * second input
                  F⊖θ«            For i in (implicit) range over first input
                        <tr>        Print("<tr>")
                            ×<td>Aη Print("<td>A") * second input

1

K, 58 바이트

K 버전은에 포함 된 것입니다 KDB+ 3.5 2017.11.30.

위의 파이썬 답변 포트. 여러 번 참여하고 병합해야하므로 1 바이트 더 길어집니다.

{,/"<table><tr>",(y#,"<th>A"),(x-1)#,("<tr>",/y#,"<td>A")}



1

PowerShell 코어 , 72 68 바이트

Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}

온라인으로 사용해보십시오!

다음은 테스트 사례 및 예상 결과입니다 (Cf, TIO).

  • m = 2; n = 3 <table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
  • m = 1; n = 3 <table><tr><th>A<th>A<th>A
  • m = 4; n = 2 <table><tr><th>A<th>A<tr><td>A<td>A<tr><td>A<td>A<tr><td>A<td>A
  • m = 2; n = 8 <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

-4 바이트에 대해 @ mazzy 감사 합니다!


1
브래킷은 선택 사항입니다. 시도하십시오 Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}.
mazzy


0

다트 , 45 63 바이트

작업 솔루션 :

(m,n){print('<table><tr>'+'<th>A'*n+('<tr>'+'<td>A'*n)*(m-1));}

온라인으로 해보십시오!

λ / 익명 함수 복용 mn파라미터 표시 출력과 행 STDOUT.

닫히지 않은있는 테이블 때문에 <table>, <tr>, <th>, 및 <td>태그 여전히 현대적인 브라우저에서 렌더링 (예를., 크롬), 출력은 유효합니다.

오래된 (파손 된) 솔루션 :

첫 번째 시도 <td>는 첫 번째 행 이후 로 전환하는 것을 잊었습니다 .

(m,n){print('<table><tr>'+'<th>A'*n+('<tr>'+'<th>A'*n)*(m-1));}

지적 해 주신 @Lynn에게 감사드립니다.


0

Google 스프레드 시트, 66 바이트

="<table><tr>"&Rept("<th>A",B1)&Rept("<tr>"&Rept("<td>A",B1),A1-1)

입력이 셀 A1B1있습니다.
정말 멋진 것은 없습니다. 그냥 중첩 Rept함수입니다.
그것은 않는 가정 m > n > 0것을 그들은 모두 정수입니다.



0

J, 64 바이트

파이썬의 또 다른 포트는 다음과 같습니다.

4 :0
'<table><tr>',(;y#<'<th>A'),;(<:x)#<('<tr>',(;y#<'<td>A'))
)

0

PHP, 161 바이트

온라인으로 사용해보십시오

암호

function f($m,$n){$t=["table>","th>","td>","tr>","</"];echo strtr("
<0<3".str_repeat("<1A41",$n)."43".str_repeat("<3".str_repeat("
<2A42",$n)."43",$m-1)."40",$t);}

설명

function f($m,$n){
  $t=["table>","th>","td>","tr>","</"];           //array representing the tags its created
  echo strtr("<0<3".str_repeat("<1A41",$n)."43"   //strtr it's called and uses 
                                                  //the array to replace values
           .str_repeat("<3".                      //repeat the tags
                         str_repeat("<2A42",$n)   //repeat the tags again
                            ."43",$m-1)."40",$t); 
   //its repeated m-1 times because head is counted as one row
  }

PHP, 193 바이트

전체 테이블 구조를 잊어 버렸습니다<tfooter> <thead>, <tbody>..etc..

함수의 예를보십시오

function f($m,$n)   {$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
echo strtr(
      "<0<1".str_repeat("<3A</3",$n).
      "</1<2".str_repeat(
                  "<6".str_repeat("<4A</4",$n)
                       ."</6",$m-1)."</2</0",
  $t);
  }

설명

$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];

테이블에 대한 모든 태그와 배열이 지은 것와 함께 다음 str_repeat배열의 인덱스로 다스 려 번호가 기록되어, 다음strtr문자열 플러스 배열 전달


0

Yabasic , 124 바이트

공백으로 구분 된 정수로 입력을 받아 콘솔로 출력하는 익명 함수입니다.

?"<table>"
input""i,j
For c=1To i
?"<tr>"
For r=1To j
If c=1?"<th>H</th>"
If c>1?"<td>D</td>"
Next
?"</tr>"
Next
?"</table>"

온라인으로 사용해보십시오!


이것은 <td> 태그를 생성하지 않습니다.
감자

@ potato-아, 나는 그것을 보지 못했습니다. 수정되었습니다.
Taylor Scott

0

넷째 (gforth) , 86 바이트

: f ." <table>" 0 do ." <tr>" dup 0 do j if ." <td>A" else ." <th>A" then loop loop ; 

온라인으로 사용해보십시오!

설명

." <table>"         \ output <table>
0 do                \ start loop from 0 to m-1
   ." <tr>"         \ output <tr>
   dup 0 do         \ duplicate n and loop from 0 to n-1
      j if          \ if the outer loop index is true (not 0)
         ." <td>A"  \ output <td>A
      else          \ if outer loop index is false (0)
         ." <th>A"  \ output <th>A
      then          \ end if-else
   loop             \ end inner loop
loop                \ end outer loop                      

0

당근 , 77 51 바이트

<th>A^*$v<tr>vl+(^h)*($^F- 1)A"h"S"d"h+(^l)v<table>

(이 작업을 수행하는 동안 작동 h하지 않는 버그를 발견 하고 수정했습니다.)

html을 줄이면서 "바꾸기"대신 "분할, 조인"을 사용하여 몇 바이트를 골퍼

온라인으로 사용해보십시오! , 명령 행 옵션 -d을 사용하여 AST를 확인하십시오 (참고 : 새 노드 인터프리터를 사용하므로 웹 사이트의 이전 버전에서는이를 실행할 수 없습니다.)

이 프로그램은 Carrot의 이상한 특성으로 인해 인덱스가 0이고 반대 순서로 입력을 3 2받아 3 × 4 테이블 을 인쇄합니다.

이렇게 프로그램을 실행하십시오. ./carrot -f prog.carrot input.txt

기본적으로 머리글 행을 만든 다음 정원의 다른 셀 (2D 테이프)에 데이터 행을 만들어 서로 연결합니다.


당근은 정원이라고 불리는 2D 테이프에서 작동합니다. 정원의 각 셀은 세 가지 스택 모드, 문자열, 부동, 배열로 구성됩니다. 각 모드에는 "스택"이라고하는 값이 있습니다 (주 : misnomer). 이 스택은 비워집니다. 셀이 특정 모드에있을 때 다음 명령은이 모드에 해당하는 스택 (예 : 부동 모드)에 영향을 미치며 작업은 스택 부동에 영향을줍니다. 물론 모드를 전환하기위한 명령이 있습니다. 각 연산자는 각 모드 및 각 인수 유형에 대해 오버로드 될 수 있으므로 모드가 중요합니다.

또한 일반 모드와 캐럿 모드의 두 가지 추가 모드 (스택에만 직접 영향을 미치지 않는 명령에만 영향을 미침)가 있습니다. 일반 모드는 정상적으로 작동하며, 연산자가 인수를 취하고 스택에 직접 영향을줍니다. 캐럿 모드에서 (거의) 모든 문자는 문자 그대로 문자열로 해석되며 나중에 스택에 따라 추가 / 추가됩니다. 캐럿 모드는 캐럿 (첨부) 또는 다운 캐럿 (선두)으로 시작 / 종료됩니다.

당근은 정원의 셀, 스택 스트링 모드 및 캐럿 모드에서 시작됩니다.


캐럿 모드에서 시작하여 문자열 <th>A은 처음에 빈 스택 문자열 에 추가됩니다. 그런 다음 입력 시간 *을 복제 하는 명령을 따릅니다 $. 그런 다음 <tr>down-caret 사용으로 stack-string 앞에 추가됩니다 v. 테이블의 헤더 행이 생성됩니다.

데이터 행을 만들기 위해 헤더를 다른 셀에 복제합니다. lIP를 오른쪽 빈 셀로 이동하고 셀 의 문자열을 왼쪽에 +추가 (^h)합니다 (본질적으로 오른쪽의 셀에 복사). ()거의 동일한 테이프로 새로운 당근 프로그램 인 서브 쉘을 시작하고 ^캐럿 모드에서 빠져 나와 h왼쪽 셀에 문자열을 가져올 수 있습니다 . 그런 다음 다음 입력에서 1을 뺀 횟수 로 *복제됩니다 ($^F- 1).

여전히 오른쪽 셀 A에서이 셀의 배열을 스택 트레이스로 나누기로 설정 "h"합니다. S스택 배열을 결합하고 스택 "d"문자열을이 값으로 설정합니다. A"h"S"d"실제로 는 데이터 행을 형성하기 위해 hs를 ds로 바꿉니다 . 이제 h우리는 왼쪽 시작 셀로 이동합니다.

이제 셀의 스택 문자열을을 사용하여이 셀의 오른쪽에 추가합니다 +(^l). 남은 것은 <table>태그 를 추가하는 것 v뿐 이므로 태그 앞에 추가하면됩니다.



0

파워 쉘, 63 바이트

$m,$n=$args;$t='h';'<table>';1..$m|%{'<tr>'+"<t$t>A"*$n;$t='d'}

로 저장하십시오 new-mntable.ps1. 테스트 스크립트 :

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

출력 (추가 공간은 선택 사항) :

<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

Powershell, 65 바이트 -replace

'<table>h'+'d'*--$args[0]-replace'h|d',('<tr>'+'<t$0>A'*$args[1])

로 저장하십시오 new-mntable.ps1. 테스트 스크립트 :

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

산출:

<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

작동 방식 :

  1. '<table>h'+'d'*--$args[0] -같은 문자열을 만듭니다 <table>hddd...
  2. 'h|d'- 대체 할 문자열 h또는 검색d
  3. '<tr>'+'<t$0>A'*$args[1] -각 문자를 다음과 같은 문자열로 바꿉니다. <tr><t$0>A<t$0>A...
  4. 어디 $0에서 캡처 group[0]-문자입니다 -replace.

Powershell, 65 바이트 scriptblock

$m,$n=$args;'<table>';&($r={'<tr>'+"<t$args>A"*$n})h;(&$r d)*--$m

로 저장하십시오 new-mntable.ps1. 테스트 스크립트 :

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

산출:

<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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.