Minimum dolgu ile işaret değişimi, döngü ve ekran


17

Giriş:

İki tamsayı: bir negatif, bir pozitif.

Çıktı:

İlk satırda en düşükten en yükseğe çıktı. İkinci satırda biz en çok ve en kaldırdık ve oturum değişti tüm bireysel numaraları. Üçüncü satırda en yüksek ve en düşük sayıları tekrar kaldırdık ve tüm tek tek sayıları tekrar değiştirdik. (Aşağıdaki örnek, zorluğu daha açık hale getirmelidir.)

Önemli: Ayrıca, bir sütundaki sayıların tümü (sağda) hizalanacak şekilde boşluklar ekleriz.
Minimum hizalama bu zorluğun ana parçasıdır, yani her bir sayıyı aynı genişliğe getiremezsiniz. Bir sütunun genişliği, söz konusu sütunun en büyük sayı genişliğini temel alır (ve işaret değişikliği içeren sıra, sayılara sütun başına bir miktar genişlik verir).


Örneğin:

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

Yukarıda görebileceğiniz gibi, boşlukları pozitif sayılara ekler, bunlar bir sütunu dengelemek için negatif sayılarla paylaştıklarında -(aynı 2 basamaklı sayılar için de geçerlidir).

Zorluk kuralları:

  • Giriş iki tamsayı olmalıdır
    • Bu tamsayıların -99- 99(dahil) aralığında olduğunu varsayabilirsiniz .
    • İlk tamsayı negatif, diğeri pozitif olacaktır.
  • Çıktı, satırlar ve doğru hizalanmış sütunlar olduğu sürece herhangi bir makul biçimde olabilir: Ie STDOUT; yeni satırlarla Dize olarak döndürme; Dizeler listesi olarak dönme; vb.
  • Çıktı ayrıca kendi seçtiğiniz bir sınırlayıcı içermelidir (boşluklar, sekmeler, yeni satırlar, rakamlar veya hariç -): Ie ,; ve ;ve |; ve X; vb. kabul edilebilir sınırlayıcılardır.
  • Çıktı çizgileri ön veya arka sınırlayıcı içermeyebilir.
  • Çıktı, bir sondaki yeni satırı içerebilir ve herhangi bir satır, herhangi bir sayıda sondaki boşluk içerebilir.

Genel kurallar:

  • Bu , bayt en kısa cevap kazanır.
    Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın.
  • Cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyon / yöntemi uygun parametrelerle, tam programları kullanmanıza izin verilir. Çağrınız.
  • Varsayılan Loopholes yasaktır.
  • Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
  • Ayrıca, gerekirse bir açıklama ekleyin.

Test senaryoları:

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
"Asla -100-100 dışında" da asla -100 veya 100 olmayı içermez mi?
Jonathan Allan

@JonathanAllan Sanırım. -100 ve 100 hariç mantıklıdır, çünkü eğer dahil edilmişlerse 3./4. Basamak eklenecek ve her şey sadece 2 değer için değiştirilecek
Bay Xcoder

İlişkili. (Bir ızgarayı doldurmanın ve sağa hizalamanın ana bileşeni başka bir zorluktur.)
Martin Ender

1
@JonathanAllan İfadeyi biraz değiştirdim. Mümkün olan en küçük negatif giriş -99ve mümkün olan en büyük pozitif giriş olduğunu varsayabilirsiniz 99.
Kevin Cruijssen

1
Önerilen test örneği: -3,15. Bazı cevaplar düzgün çalışmıyor.
17'de

Yanıtlar:


7

Jöle , 25 24 20 bayt

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

Bu, bir satır dizisi döndüren ikili bir bağlantıdır.

Çevrimiçi deneyin!

Nasıl çalışır

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 bayt

Bir kez daha aylar önce bir düzeltme yazdım ama asla itmedim aynı hata tarafından berbat ...
Golf yine de mümkün olmalıdır.

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

Çevrimiçi deneyin!


Bununla oldukça yakınlaştım: ŸÐ',ý,gÍ;µ¦¨(D',ý,¼biçimlendirme özelliklerine tam olarak uymuyor, geliştirip geliştiremeyeceğinize bakın;)
Okx

1
@Okx: Evet, biçimlendirme kesinlikle buradaki zor kısım. Ÿ[Ðg1‹#',ý,¦(¨Aksi gibi bir şey yeterli olurdu :)
Emigna

1
-3,15 gibi girişler için düzgün çalışmıyor.
17'de

@betseg: Doğru. Eski sürüme geri döndü.
Emigna

7

Java 8, 483 480 486 467 bayt

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

Hata düzeltmesi nedeniyle bayt sayısı artırıldı.

Tamam, bu aldı A LOT Düşündüğümden daha fazla zaman (ve bayt) (Java ile ..). Bu kesinlikle daha fazla golf olabilir, muhtemelen sıfırları doldurmak için NxN ızgara dizisi oluşturmak yerine tamamen farklı bir yaklaşım kullanarak (daha sonra sıfırın 'test durumu için can sıkıcı bir kenar durumu -1,1ve-12,12 ) .

Çevrimiçi deneyin.

Açıklama:

(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 bayt

(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`
`

Açıklaması:

(                                     // 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))


Yeni test senaryolarını ekleyebilir misiniz?
betseg

4

QBIC , 46 bayt

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

Nasıl çalışır:

::           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.

Neyse ki, bir sayı yazdırırken, QBasic gerekli dolguyu otomatik olarak ekler.


İşi yapmak için doğru dili bulmanın bir başka örneği :) +1
ElPedro

+1 QBIC için çevrimiçi bir derleyici var mı? Tüm test senaryoları için eylemde görmek istiyorum (kelimenizi almamıza rağmen her şeyi otomatik olarak hizalar). İlk kez QBIC görüyorum, bu yüzden açıklamanızı okuduğumda iki soru: Doğru okursam qvarsayılan değer 1'den başlar? QBIC'deki tüm değerler 1'den mi başlıyor yoksa burada eksik olduğum bir şey var mı? Ve stand ne için d/ nerede d? Ya da ddöngüdeki geçerli sayı ve ?basitçe for-loop'un kodunda gerekli olan sınırlandırıldı mı ( ?geçerli sayı olmak yerine, başlangıçta nasıl okudum)?
Kevin Cruijssen

1
@KevinCruijssen Henüz çevrimiçi çevirmen yok, üzgünüm. Ben bir üzerinde çalışıyorum, ancak tarayıcınızda QBasic 4.5 çalıştırmak düşündüğünüzden daha zor :-). qTüm küçük harfler sayı değişkendir ve harfler q-zolarak başlatılır 1-10. Ve birkaç komut sayıları kodda bulundukları sıraya göre otomatik olarak atar. daslında iç FOR döngüsündeki yineleyicidir. Daha fazla ayrıntı için ayrıca bkz . Vitrin - ya da bu
steenbergh

3

Perl 6 , 146 bayt

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

Dene

Bir dizi dizi üretir

Expanded:

{  # 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 Bayt

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

Çevrimiçi Tercüman


2
Çevrimiçi bir tercüman bağlayabilir misiniz?
17'de

@betseg Bitti ve sürümümün düzgün çalışmadığını fark ettim
Jörg Hülsermann

oh gawd sadece codegolf.se üzerinde php kullanarak. TÜM UPVOTLAR VAR.
Evan Carroll

3

C # konsol uygulaması 196 Bayt

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'ye Hoşgeldiniz! Kodunuzu 4 boşluk kullanarak girintili yapabilirsiniz (düzenlememe bakın). Kod golfünde, mümkün olan en kısa bayt sayısına (kodunuzdaki bayt miktarı) sahip olmanız gerekir - bu, daha kısa değişken adları ve boşlukların kaldırılması anlamına gelir. Ayrıca, bittikten sonra bayt sayınızı başlığınıza koymalısınız.
clismique

2

Javascript - 196 185 176 bayt

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}

Ben gerçekten yeni JS teknikleri bazı hızlandırmak için değilim bu yüzden bu muhtemelen çok daha fazla golf olabilir.

Basitçe, hücreler için herhangi bir genişlik tanımlanmamış eski moda bir HTML tablosu oluşturur, böylece ilk satır varsayılan olarak her bir girişin genişliğini en uygun şekilde ayarlar. Ayrıca, (ab) önce yeni bir açılış etiketi gelirse, HTML'nin kapanış etiketleri gerektirmemesinin "özelliğini" kullanır.

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

Çevrimiçi deneyin

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])

Dolgu değerleri dizisi oluşturur ve daha sonra gerekli biçimlendirilmiş dizeleri oluşturmak için bunu kullanır

Açıklama:

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])

Merhaba, PPCG'ye hoş geldiniz! Ne yazık ki, şu anda doğru değil. Tüm sayılara aynı kenar boşluğunu eklediniz ve ayırıcı olarak boşluk eklediniz. Zorluk, seçtiğiniz bir sınırlayıcı kullanmaktı (boşluk hariç), ancak daha da önemlisi, o sütundaki en geniş genişliğe sahip sayıya göre hizalamaya sahip olmak. Lütfen testin Önemli bölümünün yanı sıra test senaryolarına da bakınız. Yanlış yapan ilk kişi siz değilsiniz, ancak şu anda belirtilen zorlukla geçerli değil. Silmek, kurallara uymak için değişiklik yapmak ve yanıtınızı geri
almaktan çekinmeyin

2
@KevinCruijssen Bunu işaret ettiğiniz için teşekkür ederiz! Cevabımı güncelledim
Dead Possum

1
Gerçekten çok daha iyi görünüyor! Unutmuş olduğunuz sadece küçük bir kural: " Çıktı, kendi seçtiğiniz bir sınırlayıcı da içerebilir (beyaz alanlar ve yeni satırlar hariç) : Yani ,, ;ve |kabul edilebilir sınırlayıcılardır. " Şu anda sınırlayıcı olarak bir boşluk kullanıyorsunuz. Ancak genişliğin ana zorluğu gerçekten ele alındı, bu yüzden şimdiye kadar harika yapıyorsunuz! Sadece bu küçük değişiklik ve sonra yapılmalıdır. :)
Kevin Cruijssen

1
Mükemmel! +1 Her şeyi düzeltmek iyi iş. Ve bir kez daha PPCG'ye hoş geldiniz. (Btw, buradaki alan: %l[i], rangegerekli mi?)
Kevin Cruijssen

2
@KevinCruijssen Umarım bir süre PPCG'nin etrafına yapışmayı umarız, çok ilginç görünüyor (hayır, bir bayt daha kurtardı)
Dead Possum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.