สร้างตาราง am * n เป็น HTML


22

อินพุต:

เลขจำนวนเต็มฐานสิบสองจำนวน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


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Mego

คำตอบ:


7

APL (Dyalog Unicode)พร้อม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 อินพุตที่ประเมินแล้วจะปรับค่าเป็นศูนย์ (เช่น m-row, เมทริกซ์ n-column ของศูนย์)


6

JavaScript (ES6), 70 ไบต์

บันทึก 2 ไบต์ขอบคุณ @RickHitchcock

(m)(n)จะเข้าในไวยากรณ์ currying

m=>n=>'<table>'+(g=c=>'<tr>'+`<t${c}>A`.repeat(n))`h`+g`d`.repeat(m-1)

ลองออนไลน์!

การสาธิต





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ⁿ

เรียกใช้และแก้ไขข้อบกพร่อง

คลายกล่อง ungolfed และแสดงความคิดเห็นมันมีลักษณะเช่นนี้

"<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

Java 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 Ah คุณพูดถูก รหัสตัวเองและ TIO-link นั้นถูกต้อง แต่คำอธิบายของฉันมีการพิมพ์ผิด ควรได้รับการแก้ไขแล้วขอบคุณ
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 ไบต์) ฉันพบว่าสิ่งนี้น่าสนใจ แต่ไม่คุ้มกับคะแนนปัจจุบันของคุณ mคุณอาจจะสามารถกอล์ฟบิตคำตอบของคุณใช้ความคิดที่นี่เหมือนไม่แน่นอน
Olivier Grégoire

@ OlivierGrégoireเริ่มแรกฉันมีการแก้ไขmแต่เนื่องจาก<th>/ <td>ความแตกต่างมันไม่สำคัญ ฉันยังคงต้องตรวจสอบไม่ว่าจะเป็นซ้ำครั้งแรกของวงด้านนอกซึ่งในกรณีนี้ผมจำเป็นต้องใช้ทั้งjและmและฉันต้องทำภายในวงหลายครั้งซึ่งในกรณีที่ฉันต้องการและi nแทนที่จะเพิ่มขึ้นจาก 0 และตรวจสอบj<2ฉันสามารถย้อนกลับและตรวจสอบi>m-2ได้ แต่จะเป็น +1 ไบต์แทนที่จะเป็น -1 วิธีการของคุณในการใช้ลูปสองวงแยกกันพร้อมการแก้ไขmและnน่าสนใจจริงๆ :)
Kevin Cruijssen

2

APL (Dyalog Unicode) , 42 38 ไบต์SBCS

-4 ขอบคุณ ngn

โปรแกรมเต็มรูปแบบ พร้อมต์ stdin สำหรับรายการสองอิลิเมนต์ [m, n] และพิมพ์แท็กที่ unclosed ไปยัง stdout

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

ลองออนไลน์!

⊂'<th>A' ใส่สตริงนี้เพื่อจัดการกับมันโดยรวม

⎕⍴ ความพร้อมในการขนาดและวนr eshape เซลล์เดียวเพื่อเมทริกซ์ขนาดว่า

…⍀ แทรกฟังก์ชั่นต่อไปนี้ระหว่างแต่ละเซลล์ในแนวตั้ง:

{'d'}@3 ไม่สนใจเซลล์บน; วางdที่ตำแหน่งที่ 3 ในเซลล์ด้านล่าง

'<tr>',⍤1 เติมสตริงนี้แต่ละแถว

ϵ รายการ (แผ่)

'<table>', เติมสตริงนี้




@ngn เรียบร้อยแล้ว ขอบคุณ ที่เกี่ยวข้อง
อดัม

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 ไบต์ขอบคุณมันฝรั่ง

-2 ไบต์ต้องขอบคุณแมวป่า

sอาร์เรย์จะต้องมีการประกาศเป็นอาร์เรย์ไม่ได้เป็นตัวชี้มิฉะนั้นจะไม่สามารถแก้ไขได้ (เราตั้งค่าชั่วโมงแรกที่จะโฆษณา) </t>เบราว์เซอร์ส่วนใหญ่ไม่ได้สนใจว่าแท็กปิดของคุณถูกต้องเพื่อให้เราอยู่ใกล้กับแท็กทั้งหมด


ยังคงทำงานได้ดีถ้าคุณลบ</t>ที่ปรากฏสองครั้งและ -8 ไบต์
มันฝรั่ง

คุณสามารถโกนออกได้อีก 4 ไบต์ถ้าคุณย้ายเอาท์พุทแถวใหม่ไปยังลูปด้านใน (เช่นกันมันจะหลีกเลี่ยงแถวว่าง): ลองออนไลน์!
ErikF


1

Haskell , 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"))))

วงเล็บจำนวนมาก…ต้องขอบคุณ @nimi สำหรับสองไบต์ (และการสูญเสียความเป็นสากล)!

ลองออนไลน์!

หากไม่มีแท็กสิ้นสุดการใช้งานแบบตรงจะชนะที่ 87 ไบต์ ( ลองออนไลน์ ):

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

1

APL + WIN, 68 63 56 ไบต์

บันทึกทั้งหมด 12 ไบต์ด้วยAdám

แสดงพร้อมต์สำหรับจำนวนแถวตามด้วยจำนวนคอลัมน์และตัวเลือกการไม่ปิดเอาต์พุต:

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

@ Adámก่อให้เกิดความสุขเกินไปฉันกลัว ดูโอเคไหม?
เกรแฮม

ใช่ แต่คุณไม่ต้องการหรือ parens ต่อท้าย: t,,((⎕-1),n←⎕)⍴rหรือคอมม่าสองรายการแรก
อดัม

@ Adámขอบคุณ ไม่ใช่วันของฉันจะต้องร้อน (28C)!
เกรแฮม

ผสานhและrเข้าสู่การแสดงออกหลัก:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
อดัม

มีบางอย่างไม่ถูกต้อง คุณใส่เพียงหนึ่ง<tr>สำหรับร่างกาย <tr>แต่ละแถวความต้องการ
อดัม

1

เรติน่า , 56 54 ไบต์

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

ลองออนไลน์! แก้ไข: บันทึก 2 ไบต์ด้วย @CowsQuack คำอธิบาย: ระยะแรกใช้การคูณสตริงของ Retina 1 ก่อนเพื่อสร้างจำนวนเซลล์ที่เหมาะสมจากนั้นสร้างจำนวนแถวที่เหมาะสม ขั้นตอนที่สองจะเปลี่ยนแถวแรกของtds เป็นths


หากคุณรู้ว่าอินพุตจะถูกแบ่งด้วยช่องว่างคุณควรใช้.แทน\d
Kritixi Lithos


1

K, 58 ไบต์

รุ่น K KDB+ 3.5 2017.11.30เป็นสิ่งที่จะรวมอยู่ใน

พอร์ตของคำตอบ Python ด้านบน ลงเอยด้วยความยาว 1 ไบต์เนื่องจากต้องเข้ารับการเกณฑ์และแบนหลาย ๆ ครั้ง

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

1

Perl 5 -p , 65 54 ไบต์

-11 ไบต์ขอบคุณคำเตือนของ @ msh2108

/ /;$_="<table><tr>"."<th>A"x$'.('<tr>'.'<td>B'x$')x$`

ลองออนไลน์!


ช่วยตัวเองบางไบต์ .'</table>'ตามตัวอย่างในความท้าทายคุณสามารถวาง
msh210


1

PowerShell Core , 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

ขอบคุณ @ mazzyสำหรับ -4 ไบต์!


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));}

ลองออนไลน์ได้ที่นี่!

แลมบ์ดา / ไม่ระบุชื่อสละฟังก์ชั่นmและเป็นพารามิเตอร์ที่ส่งออกแสดงเพื่อnSTDOUT

ตั้งแต่ตารางที่มี unclosed <table>, <tr>, <th>และ<td>แท็กยังคงแสดงผลในเบราว์เซอร์ที่ทันสมัย (อดีต., Chrome) เอาท์พุทที่ถูกต้อง

โซลูชันเก่า (แตก):

ความพยายามครั้งแรกของฉันลืมเปลี่ยนไป<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)

การป้อนข้อมูลที่อยู่ในเซลล์และA1 ไม่มีอะไรแฟนซีจริง ๆ ; มันเป็นเพียงฟังก์ชั่นที่ซ้อนกัน มันไม่สมมติและว่าพวกเขากำลังทั้งจำนวนเต็มB1
Rept
m > n > 0




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

Forth (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 และใช้ "split, join" แทน "replace"

ลองออนไลน์! ใช้ตัวเลือกบรรทัดคำสั่ง-dเพื่อดู AST (หมายเหตุ: สิ่งนี้ใช้ตัวแปลโหนดใหม่ดังนั้นเวอร์ชันที่เก่ากว่าบนเว็บไซต์จะไม่สามารถรันสิ่งนี้ได้)

โปรแกรมนี้ใช้อินพุท 0 ดัชนีและเรียงลำดับกลับกันเนื่องจากลักษณะแปลกประหลาดของแครอทดังนั้นจึง3 2พิมพ์ตาราง 3 × 4

เรียกใช้โปรแกรมเช่นนั้น ./carrot -f prog.carrot input.txt

โดยทั่วไปสร้างแถวส่วนหัวจากนั้นแถวข้อมูลบนอีกเซลล์หนึ่งของสวน (เทป 2D) และเชื่อมต่อเข้าด้วยกัน


แครอททำงานบนเทป 2D ที่เรียกว่าสวน แต่ละเซลล์ในสวนประกอบด้วยสามโหมดสแต็กสตริงลอยอาร์เรย์ มีค่าสำหรับแต่ละโหมดเรียกว่า "สแต็ก" (หมายเหตุ: misnomer) สแต็คเหล่านี้เริ่มว่างเปล่า เมื่อเซลล์อยู่ในโหมดใดโหมดหนึ่งคำสั่งต่อไปนี้จะมีผลต่อสแต็กที่สอดคล้องกับโหมดนี้ตัวอย่างเช่นในโหมดลอยการดำเนินการจะมีผลต่อสแต็กโฟลต และแน่นอนว่ามีคำสั่งสำหรับสลับระหว่างโหมดต่างๆ โหมดมีความสำคัญเนื่องจากผู้ให้บริการแต่ละรายสามารถโอเวอร์โหลดสำหรับแต่ละโหมดและแต่ละประเภทอาร์กิวเมนต์

นอกจากนี้ยังมีโหมดเพิ่มเติมอีกสองโหมด (เหล่านี้จะมีผลกับคำสั่งเท่านั้นไม่ใช่สแต็คโดยตรง) โหมดปกติและโหมดคาเร็ต โหมดปกติทำงานได้ตามปกติโดยมีโอเปอเรเตอร์กำลังทำการโต้แย้งและส่งผลกระทบต่อสแต็กโดยตรง ในโหมดคาเร็ต (เกือบ) ตัวละครทุกตัวจะถูกตีความอย่างแท้จริงว่าเป็นสตริงและต่อมาจะมีการเพิ่ม / ต่อท้ายตามสแต็ก โหมดคาเร็ตเริ่มต้น / สิ้นสุดด้วยคาเร็ต (ต่อท้าย) หรือดาวน์คาเร็ต (ต่อท้าย)

แครอทเริ่มต้นในเซลล์ในสวนในโหมดสแต็คสตริงและในโหมดคาเร็ต


เริ่มต้นในโหมดคาเร็ตสตริง<th>Aจะถูกเพิ่มไปยังสแต็กสตริงเริ่มต้นที่ว่างเปล่า จากนั้นทำตาม*คำสั่งที่ซ้ำซ้อน$กับอินพุตเวลา จากนั้นจะใช้ได้กับสแต็คสตริงโดยการใช้ลงลูกศร<tr> vสิ่งนี้จะสร้างแถวส่วนหัวของตาราง

ในการสร้างแถวข้อมูลเราทำซ้ำส่วนหัวกับเซลล์อื่น lย้าย IP ไปที่เซลล์ว่างด้านขวาและ+ผนวก(^h)สตริงในเซลล์ทางซ้าย (โดยปกติการคัดลอกไปยังเซลล์ทางด้านขวา) ()เริ่ม subshell ซึ่งเป็นโปรแกรมแครอทใหม่ที่มีเทปเกือบเหมือนกันและ^ออกจากโหมดคาเร็ตเพื่อที่เราจะhได้สตริงในเซลล์ด้านซ้าย สิ่งนี้จะถูก*ทำซ้ำโดย($^F- 1)อินพุทถัดไปลบ 1, ครั้ง

ยังคงอยู่ในมือถือที่เหมาะสมAกำหนดอาร์เรย์ของเซลล์นี้เพื่อแยก stack- "h"ลิบลับของตนโดย Sรวมสแต็กอาร์เรย์โดย"d"และตั้งค่าสแต็กสตริงเป็นค่านี้ A"h"S"d"เพียงแค่แทนที่hs ด้วยds เพื่อสร้างแถวข้อมูล ตอนนี้hเราย้ายไปที่เซลล์เริ่มต้นด้านซ้าย

+(^l)ตอนนี้เราผนวกสตริงสแต็คของเซลล์ไปทางขวาเพื่อใช้มือถือนี้ สิ่งที่เหลืออยู่คือการเพิ่ม<table>แท็กดังนั้นเราจึงทำสิ่งนี้โดยการเตรียมแท็กvไว้ล่วงหน้า



0

Powershell, 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.