เข้าสู่ระบบการเปลี่ยนแปลงวงและจอแสดงผลที่มีการขยายน้อยที่สุด


17

การป้อนข้อมูล:

จำนวนเต็มสองค่า: ค่าลบหนึ่งค่า, ค่าบวกหนึ่งค่า

เอาท์พุท:

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

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


ตัวอย่างเช่น:

Input: -3,6

Output:
-3,-2,-1, 0, 1, 2, 3, 4,5,6   // sequence from lowest to highest
 2, 1, 0,-1,-2,-3,-4,-5       // -3 and 6 removed; then all signs changed
-1, 0, 1, 2, 3, 4             // 2 and -5 removed; then all signs changed again
 0,-1,-2,-3                   // -1 and 4 removed; then all signs changed again
 1, 2                         // 0 and -3 removed; then all signs changed again
                              // only two numbers left, so we're done

ตามที่คุณเห็นด้านบนช่องว่างจะถูกเพิ่มในจำนวนบวกเมื่อพวกเขาแบ่งปันคอลัมน์ด้วยจำนวนลบเพื่อชดเชย-(เช่นเดียวกับตัวเลข 2 หลัก)

กฏท้าทาย:

  • ข้อมูลที่ป้อนต้องเป็นจำนวนเต็มสองจำนวน
    • คุณสามารถสมมติว่าจำนวนเต็มเหล่านี้อยู่ในช่วง-99- 99(รวม)
    • จำนวนเต็มแรกจะเป็นค่าลบและอีกจำนวนหนึ่งจะเป็นค่าบวก
  • เอาต์พุตสามารถอยู่ในรูปแบบที่สมเหตุสมผลตราบใดที่มันชัดเจนว่ามีแถวและคอลัมน์ที่ถูกจัดชิด: Ie STDOUT; กลับมาเป็น String พร้อมกับการขึ้นบรรทัดใหม่; กลับมาเป็นรายการของสตริง การโทรของคุณ
  • เอาต์พุตจะต้องมีตัวคั่นที่คุณเลือกเอง (ยกเว้นช่องว่างแท็บบรรทัดใหม่ตัวเลขหรือ-): Ie ,; และ;และ|; และX; ฯลฯ เป็นตัวคั่นที่ยอมรับได้ทั้งหมด
  • บรรทัดเอาต์พุตอาจไม่มีตัวคั่นนำหน้าหรือต่อท้าย
  • ผลลัพธ์อาจประกอบด้วยบรรทัดใหม่หนึ่งบรรทัดและบรรทัดใด ๆ อาจมีช่องว่างต่อท้ายจำนวนเท่าใดก็ได้

กฎทั่วไป:

  • นี่คือดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
    อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ '
  • กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมโปรแกรมเต็มรูปแบบ การโทรของคุณ
  • ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
  • หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
  • นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น

กรณีทดสอบ:

Input: -3,6

Output:
-3,-2,-1, 0, 1, 2, 3, 4,5,6
 2, 1, 0,-1,-2,-3,-4,-5
-1, 0, 1, 2, 3, 4
 0,-1,-2,-3
 1, 2

Input: -1,1

Output:
-1,0,1
 0

Input: -2,8

Output:
-2,-1, 0, 1, 2, 3, 4, 5, 6,7,8
 1, 0,-1,-2,-3,-4,-5,-6,-7
 0, 1, 2, 3, 4, 5, 6
-1,-2,-3,-4,-5
 2, 3, 4
-3

Input: -15,8

Output: 
-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6,7,8
 14, 13, 12, 11, 10,  9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7
-13,-12,-11,-10, -9, -8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6
 12, 11, 10,  9,  8,  7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5
-11,-10, -9, -8, -7, -6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4
 10,  9,  8,  7,  6,  5, 4, 3, 2, 1, 0,-1,-2,-3
 -9, -8, -7, -6, -5, -4,-3,-2,-1, 0, 1, 2
  8,  7,  6,  5,  4,  3, 2, 1, 0,-1
 -7, -6, -5, -4, -3, -2,-1, 0
  6,  5,  4,  3,  2,  1
 -5, -4, -3, -2
  4,  3

Input: -3,15

Output:
-3,-2,-1, 0, 1, 2, 3, 4,  5, 6,  7,  8,  9, 10, 11, 12, 13,14,15
 2, 1, 0,-1,-2,-3,-4,-5, -6,-7, -8, -9,-10,-11,-12,-13,-14
-1, 0, 1, 2, 3, 4, 5, 6,  7, 8,  9, 10, 11, 12, 13
 0,-1,-2,-3,-4,-5,-6,-7, -8,-9,-10,-11,-12
 1, 2, 3, 4, 5, 6, 7, 8,  9,10, 11
-2,-3,-4,-5,-6,-7,-8,-9,-10
 3, 4, 5, 6, 7, 8, 9
-4,-5,-6,-7,-8
 5, 6, 7
-6

Input: -12,12

Output:
-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8,  9, 10,11,12
 11, 10,  9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11
-10, -9, -8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
  9,  8,  7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9
 -8, -7, -6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8
  7,  6,  5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7
 -6, -5, -4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6
  5,  4,  3, 2, 1, 0,-1,-2,-3,-4,-5
 -4, -3, -2,-1, 0, 1, 2, 3, 4
  3,  2,  1, 0,-1,-2,-3
 -2, -1,  0, 1, 2
  1,  0, -1
  0

1
"ไม่เคยอยู่นอก -100-100" ซึ่งรวมถึงการไม่เคยเป็น -100 หรือ 100 ด้วยหรือไม่
Jonathan Allan

@JanathanAllan ฉันคิดอย่างนั้น มันสมเหตุสมผลแล้วที่ไม่รวม -100 และ 100 เพราะถ้ารวมแล้วจะมีการเพิ่มตัวเลขที่ 3/4 และทุกอย่างจะเปลี่ยนเป็น 2 ค่าเท่านั้น
Mr. Xcoder

ที่เกี่ยวข้อง (ความท้าทายอีกประการหนึ่งที่การขยายและการจัดตำแหน่งกริดเป็นองค์ประกอบหลัก)
Martin Ender

1
@JanathanAllan ฉันเปลี่ยนถ้อยคำไปนิดหน่อย คุณสามารถสันนิษฐานได้ว่าการป้อนข้อมูลเชิงลบน้อยที่สุดคือและการป้อนข้อมูลที่เป็นไปได้ในเชิงบวกที่ใหญ่ที่สุดคือ-99 99
Kevin Cruijssen

1
กรณีทดสอบที่เสนอ: -3,15 คำตอบบางอย่างทำงานไม่ถูกต้อง
betseg

คำตอบ:


7

เจลลี่ , 25 24 20 ไบต์

rµḊṖNµÐĿZbȷG€Ỵ€Zj€”,

นี่คือลิงก์ dyadic ที่ส่งคืนอาร์เรย์ของแถว

ลองออนไลน์!

มันทำงานอย่างไร

rµḊṖNµÐĿZbȷG€Ỵ€Zj€”,  Dyadic link. Arguments: a, b

r                      Range; yield [a, ..., b].
 µ   µÐĿ               Apply the enclosed chain until the results are no longer
                       unique. Return the array of results.
  Ḋ                      Dequeue; remove the first item.
   Ṗ                     Pop; remove the last item.
    N                    Negate; multiply all remaining integers by -1.
       Z               Zip; transpose rows and columns.
        bȷ             Base 1000; map each n to [n].
          G€           Grid each; in each row, pad all integers to the same length,
                       separating the (singleton) rows by linefeeds.
            Ỵ€         Split each result at linefeeds.
              Z        Zip to restore the original layout.
               j€”,    Join each row, separating by commata.

7

05AB1E , 59 ไบต์

อีกครั้งที่ฉันถูกเมาโดยข้อผิดพลาดเดียวกันฉันเขียนการแก้ไขสำหรับเดือนที่ผ่านมา แต่ไม่เคยผลัก ... การ
เล่นกอล์ฟควรจะเป็นไปได้แม้ว่า

Ÿ[Ðg1‹#ˆ¦(¨]\\¯vy€g}})J.Bvyð0:S})øvyZs\})U¯vyvyXNèyg-ú}',ý,

ลองออนไลน์!


ฉันใกล้เคียงกับสิ่งนี้: ŸÐ',ý,gÍ;µ¦¨(D',ý,¼มันค่อนข้างไม่พอดีกับข้อกำหนดการจัดรูปแบบดูว่าคุณสามารถปรับปรุงได้หรือไม่)
Okx

1
@Okx: ใช่การจัดรูปแบบเป็นส่วนที่ยากแน่นอนที่นี่ บางสิ่งบางอย่างŸ[Ðg1‹#',ý,¦(¨อาจจะเพียงพอแล้ว :)
Emigna

1
ทำงานไม่ถูกต้องสำหรับอินพุตเช่น -3,15
betseg

@betseg: คุณเป็นใคร เปลี่ยนกลับเป็นเวอร์ชันเก่า
Emigna

7

Java 8, 483 480 486 467 ไบต์

(a,b)->{int f=0,l=b-a+3,z[][]=new int[l][l],y[]=new int[l],i,j,k=0;for(;b-a>=0;k++,a++,b--,f^=1)for(j=0,i=a;i<=b;i++)z[k][j++]=f<1?i:-i;String r="",s;for(i=0;i<l;y[i++]=k)for(j=0,k=1;j<l;k=f>k?f:k)f=(r+z[j++][i]).length();for(i=0;i<l;i++){k=z[i][0];if(i>0&&k==z[i][1]&k==z[i-1][2])break;for(j=0;j<l;){k=z[i][j];s="";for(f=(s+k).length();f++<y[j];s+=" ");f=z[i][++j];if(k==f){r+=(i>0&&z[i-1][1]==z[i][1]?s+0:"")+"\n";j=l;}else r+=s+k+(f==z[i][j+1]?"":",");}}return r;}

ไบต์เพิ่มขึ้นเนื่องจากการแก้ไขข้อบกพร่อง ..

ตกลงนี้เอามากเวลามากขึ้น (และ bytes) กว่าที่ฉันคิด (ใน Java ที่เป็น .. ) สิ่งนี้สามารถตีกอล์ฟได้มากกว่านี้โดยใช้วิธีการที่แตกต่างไปจากเดิมอย่างสิ้นเชิงแทนที่จะสร้างกริด NxN เพื่อเติมเต็มและจากนั้น 'ตัดส่วนของศูนย์' (ด้วยเคสขอบที่น่ารำคาญสำหรับกรณีทดสอบ-1,1และ-12,12) .

ลองออนไลน์

คำอธิบาย:

(a,b)->{        // Method with two integer parameters and String return-type
  int f=0,      //  Flag-integer, starting at 0
      l=b-a+3,  //  Size of the NxN matrix,
                //  plus two additional zeros (so we won't go OutOfBounds)
      z[][]=new int[l][l],
                //  Integer-matrix (default filled with zeros)
      y[] = new int[l],
                //  Temp integer-array to store the largest length per column
      i,j,k=0;  //  Index-integers
  for(;b-a>=0   //  Loop as long as `b-a` is not negative yet
      ;         //    After every iteration:
       k++,     //     Increase `k` by 1
       a++,     //     Increase `a` by 1
       b--,     //     Decrease `b` by 1
       f^=1)    //     Toggle the flag-integer `f` (0→1 or 1→0)
    for(j=0,i=a;i<=b;i++)
                //   Inner loop `i` in the range [`a`, `b`]
      z[k][j++]=//    Set all the values in the matrix to:
        f<1?    //     If the flag is 0:
         i      //      Simply use `i`
        :       //     Else (flag is 1):
         -i;    //      Use the negative form of `i` instead
  String r="",  //  The return-String
         s;     //  Temp-String used for the spaces
  for(i=0;i<l;  //  Loop `i` over the rows of the matrix
      ;y[i++]=k)//    After every iteration: Set the max column-width
    for(j=0,k=1;j<l;
                //   Inner loop `j` over the cells of each row
        k=f>k?f:k)
                //     After every iteration: Set `k` to the highest of `k` and `f`
      f=(r+z[j++][i]).length();
                //    Determine current number's width
                //    (NOTE: `f` is no longer the flag, so we re-use it as temp value)
  for(i=0;i<l;i++){
                //  Loop `i` over the rows of the matrix again
    k=z[i][0];  //   Set `k` to the first number of this row
    if(i>0      //   If this isn't the first row
       &&k==z[i][1]&k==z[i-1][2])
                //   and the first number of this row, second number of this row,
                //   AND third number of the previous row all equal (all three are 0)
      break;    //    Stop loop `i`
    for(j=0;j<l;){
                //   Inner loop `j` over the cells of each row
      k=z[i][j];//    Set `k` to the number of the current cell
      s="";     //    Make String `s` empty again
      for(f=(s+k).length();f++<y[j];s+=" ");
                //    Append the correct amount of spaces to `s`,
                //    based on the maximum width of this column, and the current number
      f=z[i][++j];
                //    Go to the next cell, and set `f` to it's value
      if(k==f){ //    If the current number `k` equals the next number `f` (both are 0)
        r+=     //     Append result-String `r` with:
          (i>0  //      If this isn't the first row
           &&z[i-1][1]==z[i][1]?
                //      and the second number of this and the previous rows 
                //      are the same (both are 0):
            s+0 //       Append the appropriate amount of spaces and a '0'
           :    //      Else:
            "") //       Leave `r` the same
          +"\n";//     And append a new-line
         j=l;}  //     And then stop the inner loop `j`
      else      //    Else:
       r+=s     //     Append result-String `r` with the appropriate amount of spaces
          +k    //     and the number 
          +(f==z[i][j+1]?"":",");}}
                //     and a comma if it's not the last number of the row
  return r;}    //  Return the result `r`

6

Javascript (ES6), 269 ไบต์

(a,b,d=~a+b+2,o=Array(~~(d/2)+1).fill([...Array(d)].map(_=>a++)).map((e,i)=>e.slice(i,-i||a.a)).map((e,i)=>i%2==0?e:e.map(e=>e*-1)))=>o.map(e=>e.map((e,i)=>' '.repeat(Math.max(...[...o.map(e=>e[i]).filter(e=>e!=a.a)].map(e=>[...e+''].length))-`${e}`.length)+e)).join`
`

อธิบาย:

(                                     // begin arrow function

  a,b,                                // input

  d=~a+b+2,                           // distance from a to b

  o=Array(~~(d/2)+1)                  // create an outer array of
                                      // (distance divided by 2 
                                      // floored + 1) length

    .fill(                            // fill each outer element
                                      // with the following:

      [...Array(d)]                   // create inner array of the 
                                      // distance length and 
                                      // fill with undefined

        .map(_=>a++)                  // map each inner element 
                                      // iterating from a to b
    ) 
    .map(                             // map outer array

      (e,i)=>e.slice(i,-i||a.a)       // remove n elements from each end 
                                      // of the inner array corresponding 
                                      // to the outer index with a special 
                                      // case of changing 0 to undefined
    )
    .map(                             // map outer array

      (e,i)=>i%2==0?e:e.map(e=>e*-1)  // sign change the inner elements
                                      // in every other outer element
    )
)=>                                   // arrow function return

  o                                   // outer array

    .map(                             // map outer array

      e=>e.map(                       // map each inner array

        (e,i)=>' '.repeat(            // repeat space character the
                                      // following amount:

          Math.max(...                // spread the following array to
                                      // max arguments:

            [...                      // spread the following to an
                                      // array:

              o                       // outer array

                .map(e=>e[i])         // map returning each element of
                                      // the same inner index from the
                                      // outer array

                .filter(e=>e!=a.a)    // remove undefined elements
            ]
            .map(e=>[...e+''].length) // map each element to the  
                                      // length of the string

          )                           // returns the max string 
                                      // length of each column

          -`${e}`.length              // subtract the current 
                                      // element's string length 
                                      // from the max string length

      )                               // returns the appropriate amount
                                      // of padding

      +e                              // add the element to the padding
    )
  ).join`
`                                     // join each element of outer
                                      // array as string with newline

const f = (a,b,d=~a+b+2,o=Array(~~(d/2)+1).fill([...Array(d)].map(_=>a++)).map((e,i)=>e.slice(i,-i||a.a)).map((e,i)=>i%2==0?e:e.map(e=>e*-1)))=>o.map(e=>e.map((e,i)=>' '.repeat(Math.max(...[...o.map(e=>e[i]).filter(e=>e!=a.a)].map(e=>[...e+''].length))-`${e}`.length)+e)).join`
`
console.log('Test Case: -1,1')
console.log(f(-1,1))
console.log('Test Case: -3,6')
console.log(f(-3,6))
console.log('Test Case: -2,8')
console.log(f(-2,8))
console.log('Test Case: -15,8')
console.log(f(-15,8))
console.log('Test Case: -3,15')
console.log(f(-3,15))
console.log('Test Case: -12,12')
console.log(f(-12,12))


คุณสามารถเพิ่มกรณีทดสอบใหม่ได้หรือไม่
betseg

4

QBICขนาด 46 ไบต์

::[0,-1*a+b,2|[a,b|?d*q';`]q=q*-1┘a=a+1┘b=b-1?

มันทำงานอย่างไร:

::           Read the negative and positive ints as a and b
[0,-1*a+b,2| FOR(c = 0; c < range(a, b); c+=2) {} This creates the proper amount of lines.
  [a,b|      For each line, loop from lower to upper
    ?d*q     Print the current point in the range, accounting for the sign-switch
     ';`     And suppress newlines. The ' and ` stops interpreting special QBIC commands.
  ]          NEXT line
  q=q*-1┘    Between the lines, flip the sign-flipper
  a=a+1┘     Increase the lower bound
  b=b-1?     Decrease the upper bound, print a newline
             The outermost FOR loop is auto-closed at EOF.

โชคดีที่เมื่อพิมพ์ตัวเลข QBasic จะเพิ่มการเติมที่จำเป็นโดยอัตโนมัติ


อีกกรณีหนึ่งในการค้นหาภาษาที่เหมาะสมในการทำงาน :) +1
ElPedro

+1 มีคอมไพเลอร์ออนไลน์สำหรับ QBIC หรือไม่ ฉันต้องการที่จะเห็นมันในการดำเนินการสำหรับกรณีทดสอบทั้งหมด (แม้ว่าฉันจะใช้คำของคุณมันจัดทุกอย่างอัตโนมัติ) ครั้งแรกที่ฉันเห็น QBIC ดังนั้นสองคำถามเมื่อฉันอ่านคำอธิบายของคุณ: ถ้าฉันอ่านมันqเริ่มต้นที่ถูกต้องค่าเริ่มต้นที่ 1? ค่าทั้งหมดใน QBIC เริ่มต้นที่ 1 หรือมีสิ่งที่ฉันขาดไปหรือเปล่า และd/ dยืนสำหรับอะไร หรือเป็นdตัวเลขปัจจุบันในลูปและ?เป็นตัวคั่นที่จำเป็นในโค้ด for-loop (แทนที่จะ?เป็นหมายเลขปัจจุบันซึ่งเป็นวิธีที่ฉันอ่านตอนแรก)?
Kevin Cruijssen

1
@KevinCruijssen ยังไม่มีล่ามออนไลน์ขออภัย ฉันกำลังดำเนินการอยู่ แต่ก็ยากกว่าที่คุณคิดเพื่อให้ QBasic 4.5 ทำงานในเบราว์เซอร์ของคุณ :-) qเริ่มต้นที่ 1. ตัวพิมพ์เล็กทั้งหมดอยู่ในจำนวน vars และตัวอักษรq-zจะ initialised 1-10ไป และคำสั่งหลายคำสั่งกำหนดหมายเลขอัตโนมัติตามลำดับที่พบในรหัส dเป็นตัววนซ้ำใน FOR-loop ด้านใน สำหรับรายละเอียดเพิ่มเติมดูตู้โชว์ - หรือนี้
steenbergh

3

Perl 6 , 146 ไบต์

{$_:=(($^a..$^b).List,{-«.[1..*-2]}...3>*).List;$/:=[map {"%{.max}s"},roundrobin($_)».chars];map {join ',',map {$^a.fmt: $^b},flat($_ Z $/)},$_}

ลองมัน

สร้างลำดับของสตริง

ขยาย:

{  # bare block lambda with placeholder parameters 「$a」 and 「$b」

  # generate the data
  $_ := (                 # bind to $_ so it isn't itemized

                          # produce a sequence
    ( $^a .. $^b ).List,  # seed the sequence, and declare parameters
    { \ .[ 1 .. *-2 ] } # get all the values except the ends and negate
    ...                   # keep producing until
    3 > *                 # the length of the produced list is less than 3

  ).List;                 # turn the Seq into a List


  # generate the fmt arguments
  $/ := [                 # bind an array to 「$/」 so it isn't a Seq
    map
      { "%{ .max }s" },   # turn into a 「.fmt」 argument ("%2s")

      roundrobin($_)\     # turn the "matrix" 90 degrees
      ».chars             # get the string length of each number
  ];


  # combine them together
  map
    {
      join ',',
        map
          { $^a.fmt: $^b }, # pad each value out
          flat(
            $_ Z $/         # zip the individual number and it's associated fmt
          )
    },
    $_                      # map over the data generated earlier
}

3

PHP 7.1, 277 ไบต์

for([,$a,$b]=$argv,$c=count($r=range($a,$b))/2;$c-->0;$r=range(-$r[1],-$r[count($r)-2]))$y[]=array_map(strlen,$x[]=$r);for($i=0;$i<count($y[0]);$i++)$z[$i]=max(array_column($y,$i));foreach($x as $g){$o=[];foreach($g as$k=>$v)$o[]=sprintf("%$z[$k]d",$v);echo join(",",$o)."\n";}

ล่ามออนไลน์


2
คุณสามารถลิงค์ล่ามออนไลน์ได้หรือไม่
betseg

@betseg เสร็จสิ้นและตระหนักดีว่ารุ่นของฉันไม่ได้ทำงานอย่างถูกต้อง
JörgHülsermann

โอ้ gawd เพียงแค่ใช้ php กับ codegolf.se มีการเปลี่ยนแปลงทั้งหมด
Evan Carroll

3

แอปพลิเคชันคอนโซล C # 196 ไบต์

static void p(int a,int b){string S="",d ="";int c=-1;for(int i=b;i >=a;i--){c=c==1?c=-1:c=1;for(int j = a;j<=i;j++){S=j!=a?",":S="";d=d+S+(j*c);}d+= "\r\n";a++;}Console.Write(d);Console.Read();}

ยินดีต้อนรับสู่ PPCG! คุณสามารถเยื้องรหัสของคุณโดยใช้ช่องว่าง 4 (ดูการแก้ไขของฉัน) ในการเขียนโค้ดคุณต้องมีจำนวนไบต์ที่สั้นที่สุด (จำนวนไบต์ในรหัสของคุณ) ที่เป็นไปได้นั่นหมายถึงชื่อตัวแปรที่สั้นลงและการลบช่องว่าง นอกจากนี้คุณควรใส่จำนวนไบต์ในส่วนหัวเมื่อเสร็จแล้ว
clismique

2

Javascript - 196 185 176 ไบต์

function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}l.shift();l.pop()}return h}

ฉันไม่ได้เร่งความเร็วกับเทคนิค JS รุ่นใหม่กว่าดังนั้นนี่อาจเป็นเรื่องที่ต้องตีกอล์ฟมากขึ้น

เพียงสร้างตาราง HTML แบบเก่าที่ไม่มีการกำหนดความกว้างสำหรับเซลล์ดังนั้นค่าเริ่มต้นของแถวแรกจะเป็นความกว้างของแต่ละรายการจะเพิ่มระยะห่างที่เหมาะสม และยัง (ab) ใช้ "คุณสมบัติ" ของ HTML ซึ่งไม่จำเป็นต้องใช้แท็กปิดหากแท็กเปิดใหม่มาพร้อมก่อน

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}l.shift();l.pop()}return h}
document.write(f(-1,1))
</script>

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}l.shift();l.pop()}return h}
document.write(f(-3,6))
</script>

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}h+='</tr>';l.shift();l.pop()}return h}
document.write(f(-2,8))
</script>

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}h+='</tr>';l.shift();l.pop()}return h}
document.write(f(-15,8))
</script>

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}h+='</tr>';l.shift();l.pop()}return h}
document.write(f(-3,15))
</script>

<script>
function f(i,j){l=[];for(x=i;x<j+1;x++)l.push(x);h='<table>';while(l.length>0){h+='<tr>';for(x=0;x<l.length;x++){h+='<td align=right>'+l[x];l[x]*=-1}h+='</tr>';l.shift();l.pop()}return h}
document.write(f(-12,12))
</script>


2

Python 2 - 208 ไบต์

ลองออนไลน์

d,u=input()
l=[x for x in range(d,u+1)]
M=map(lambda x:~9<x<21-u-u%2and 2or 3,l)
M[-1]-=1
M[-2]-=1
while len(l)>0:print','.join(map(lambda i:('%'+'%d'%M[i]+'d')%l[i],range(len(l))));l=map(lambda e:-e,l[1:-1])

สร้างอาร์เรย์ของค่า padding จากนั้นใช้เพื่อสร้างสตริงที่กำหนด

คำอธิบาย:

d,u=input()
# create list of all values
l=[x for x in range(d,u+1)]
# create array of padding values
# by default, padding 2 used for numbers in [-9;9] and 3 for all other (limited with -99 and 99)
# but contracting list moves numbers larger that 9 under ones, that are <=9
# so upper limit of padding 2 is limited with 21-u-u%2
# (~9 == -10)
M=map(lambda x:~9<x<21-u-u%2and 2or 3,l)
# last two elements should have lower padding as there won't be any other numbers it their columns
M[-1]-=1
M[-2]-=1
while len(l)>0:
    # create formatted string for every element in l
    # join all strings with comma
    print','.join(map(lambda i:('%'+'%d'%M[i]+'d')%l[i],range(len(l))))
    # get slice without first and last element and change sigh
    l=map(lambda e:-e,l[1:-1])

สวัสดียินดีต้อนรับสู่ PPCG! น่าเสียดายที่ปัจจุบันมันไม่ถูกต้อง คุณได้เพิ่มระยะขอบเดียวกันให้กับตัวเลขทั้งหมดรวมถึงเพิ่มช่องว่างเป็นตัวคั่น ความท้าทายคือการใช้ตัวคั่นที่คุณเลือก (ยกเว้นช่องว่าง) แต่ที่สำคัญกว่า: ให้จัดตำแหน่งตามจำนวนที่มีความกว้างมากที่สุดในคอลัมน์นั้น โปรดดูหัวข้อสำคัญของการท้าทายรวมถึงกรณีทดสอบเป็นตัวอย่าง คุณไม่ใช่คนแรกที่ทำไม่ถูกต้อง แต่ปัจจุบันยังไม่สามารถใช้ได้กับการท้าทายที่ระบุ อย่าลังเลที่จะลบปรับเปลี่ยนให้สอดคล้องกับกฎและยกเลิกการลบคำตอบของคุณ
Kevin Cruijssen

2
@KevinCruijssen ขอบคุณสำหรับการชี้สิ่งนี้! ฉันได้อัปเดตคำตอบแล้ว
Dead Possum

1
นั่นดูดีกว่าเยอะจริง ๆ ! เพียงหนึ่งกฎเล็ก ๆ ที่คุณลืม: " การส่งออกก็อาจจะมีตัวคั่นของทางเลือกของคุณเอง(ยกเว้นช่องว่างและใหม่สาย) : Ie ,และ;และ|. มีทั้งหมดคั่นยอมรับ " ขณะนี้คุณใช้พื้นที่เป็นตัวคั่น แต่ความยากหลักของความกว้างได้รับการแก้ไขแน่นอนดังนั้นคุณทำได้ดีมาก! การเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้นจากนั้นควรทำ :)
Kevin Cruijssen

1
ที่สมบูรณ์แบบ! +1 งานที่ดีแก้ไขทุกอย่าง และยินดีต้อนรับสู่ PPCG อีกครั้ง (Btw มีพื้นที่อยู่ที่นี่: %l[i], rangeต้องการหรือไม่)
Kevin Cruijssen

2
@KevinCruijssen ฉันหวังว่าจะติดอยู่รอบ ๆ PPCG สำหรับชั่วขณะดูเหมือนว่าน่าสนใจมาก (ไม่, บันทึกอีกหนึ่งไบต์)
Dead Possum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.