Số nhị phân Trick Magic


28

Thách thức chỉ đơn giản là; xuất sáu mảng số nguyên 2D sau:

[[ 1, 11, 21, 31, 41, 51],
 [ 3, 13, 23, 33, 43, 53],
 [ 5, 15, 25, 35, 45, 55],
 [ 7, 17, 27, 37, 47, 57],
 [ 9, 19, 29, 39, 49, 59]]

[[ 2, 11, 22, 31, 42, 51],
 [ 3, 14, 23, 34, 43, 54],
 [ 6, 15, 26, 35, 46, 55],
 [ 7, 18, 27, 38, 47, 58],
 [10, 19, 30, 39, 50, 59]]

[[ 4, 13, 22, 31, 44, 53],
 [ 5, 14, 23, 36, 45, 54],
 [ 6, 15, 28, 37, 46, 55],
 [ 7, 20, 29, 38, 47, 60],
 [12, 21, 30, 39, 52]]

[[ 8, 13, 26, 31, 44, 57],
 [ 9, 14, 27, 40, 45, 58],
 [10, 15, 28, 41, 46, 59],
 [11, 24, 29, 42, 47, 60],
 [12, 25, 30, 43, 56]]

[[16, 21, 26, 31, 52, 57],
 [17, 22, 27, 48, 53, 58],
 [18, 23, 28, 49, 54, 59],
 [19, 24, 29, 50, 55, 60],
 [20, 25, 30, 51, 56]]

[[32, 37, 42, 47, 52, 57],
 [33, 38, 43, 48, 53, 58],
 [34, 39, 44, 49, 54, 59],
 [35, 40, 45, 50, 55, 60],
 [36, 41, 46, 51, 56]]

Những mảng số nguyên 2D này là gì? Đây là những con số được sử dụng trong trò ảo thuật với những lá bài chứa những con số này:

nhập mô tả hình ảnh ở đây

Trò ảo thuật yêu cầu ai đó nghĩ về một số trong phạm vi [1, 60] và đưa cho người thực hiện trò ảo thuật đó tất cả các thẻ có chứa số này. Người thực hiện trò ảo thuật sau đó có thể tính tổng các số trên cùng bên trái (tất cả sức mạnh bằng 2) của các thẻ đã cho để lấy số mà người đó đang nghĩ đến. Một số giải thích thêm về lý do tại sao công trình này có thể được tìm thấy ở đây.

Quy tắc thử thách:

  • Bạn có thể xuất sáu mảng số nguyên 2D ở bất kỳ định dạng hợp lý nào. Có thể được in với dấu phân cách; có thể là mảng số nguyên 3D chứa sáu mảng số nguyên 2D; có thể là một danh sách chuỗi các dòng; v.v.
  • Bạn được phép điền vào vị trí dưới cùng bên phải của bốn thẻ cuối cùng với giá trị âm trong phạm vi [-60, -1]hoặc ký tự '*'thay vì bỏ nó để tạo các ma trận mảng số nguyên 2D (không, bạn không được phép điền vào chúng 0hoặc không -integer thích null/ undefinedthay thế, ngoại trừ *vì một ngôi sao cũng được sử dụng trong các thẻ thực tế).
  • Thứ tự của các số trong ma trận là bắt buộc. Mặc dù nó không quan trọng đối với trò ảo thuật vật lý, tôi thấy thử thách này chủ yếu dưới dạng - , do đó hạn chế về trật tự.
    Thứ tự của các ma trận trong danh sách đầu ra có thể theo bất kỳ thứ tự nào, vì nó rõ ràng từ thẻ trên cùng bên trái là ma trận nào.

Quy tắc chung:

  • Đây là , vì vậy câu trả lời ngắn nhất bằng byte thắng.
    Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'.
  • Quy tắc chuẩn áp dụng cho câu trả lời của bạn với quy tắc I / O mặc định , vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, chương trình đầy đủ. Cuộc gọi của bạn.
  • Lỗ hổng mặc định bị cấm.
  • Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn (tức là TIO ).
  • Ngoài ra, thêm một lời giải thích cho câu trả lời của bạn rất được khuyến khích.

Liên quan. (Như trong, nó đề cập đến cùng một trò ảo thuật, nhưng tôi không thực sự có ích để lấy cảm hứng từ thử thách này. Tôi nghĩ thử thách đó tạo ra giá trị trung thực / falsey cho dù số nxuất hiện trên kthẻ ', trong đó thử thách của tôi là Thử thách KC để tạo ra sáu ma trận.)
Kevin Cruijssen

1
@DigitalTrauma Hừm, tôi không chắc đây có thực sự là một bản sao không, bởi vì thử thách của bạn là nghệ thuật (không được gắn thẻ như vậy), trong khi điều này cho phép bạn xuất ra mảng theo định dạng nhẹ nhàng hơn (không chỉ bốn cách cơ bản giống hệt nhau). Tuy nhiên, tôi không thể bỏ phiếu để mở lại vì tôi có một cái búa.
Erik the Outgolfer

@EriktheOutgolfer Woops .. Quên tôi cũng có một cái búa>.> Đôi khi có thể đóng / mở búa khá khó chịu .. Mặc dù vậy, nó đã có 2 phiếu bầu, vì vậy với tôi và tôi cũng có 4 phiếu mở. Nhưng nếu ai đó muốn đóng lại, tôi không phiền. Chúng thực sự rất giống nhau, mặc dù thử thách của anh thực sự là một [ascii-art]thách thức với các quy tắc đầu ra nghiêm ngặt (MD5), trong đó của tôi rất linh hoạt (và các hàng / cột được hoán đổi, và phạm vi [1,60]thay vì [1,63]; sự khác biệt nhỏ, nhưng vẫn).
Kevin Cruijssen

Có vẻ như bạn đã không thử VTRO với thái độ "đây là thử thách quý giá của tôi !!!" ít nhất ...: P
Erik the Outgolfer

1
Tôi cũng quên mất cái búa. Tôi vẫn nghĩ rằng điều này đủ gần để bỏ phiếu để nhân đôi, mặc dù tôi sẽ trì hoãn sự khôn ngoan của cộng đồng nếu nó được mở lại.
Chấn thương kỹ thuật số

Câu trả lời:


6

MATL , 12 11 byte

-1 byte nhờ chính chủ :)

60:B"@fQ6eq

Giải trình:

60:           % create a vector [1,2,3,...,60]
   B          % convert to binary matrix (each row corresponds to one number)
    "         % loop over the columns and execute following commands:
     @f       % "find" all the nonzero entries and list their indices
       Q      % increment everything
        6e    % reshape and pad with a zero at the end
          q   % decrement (reverts the increment and makes a -1 out of the zero
              % close loop (]) implicitly
              % display the entries implicitly

Hãy thử trực tuyến!


8

Perl 6 , 63 46 byte

say grep(*+&2**$_,^61)[$_,*+5...*for ^5]for ^6

Hãy thử trực tuyến!

Đầu ra dưới dạng mảng 2D trên nhiều dòng, với mảng cuối cùng của mỗi dòng bị cắt nếu cần thiết.


7

Python 2 , 76 byte

r=range;print[[[i for i in r(61)if i&2**k][j::5]for j in r(5)]for k in r(6)]

Hãy thử trực tuyến!

Phương pháp ở đây là tạo một danh sách tất cả các số có thể r(61) và sau đó chia nhỏ nó xuống danh sách các số cho một thẻi&2**k .

Sau đó, bằng cách sử dụng cắt danh sách, danh sách các số 1D đó được sắp xếp lại theo kích thước thẻ 6x5 chính xác [card nums][j::5]for j in r(5) .

Sau đó, trình tạo này chỉ được lặp lại cho 6 thẻ for k in r(6) .


Mặc dù tôi không thể tìm thấy bất kỳ giải pháp nào dưới 76 byte, nhưng đây là hai giải pháp khác cũng là 76 byte:

r=range;print[[[i for i in r(61)if i&1<<k][j::5]for j in r(5)]for k in r(6)]

Hãy thử trực tuyến!

Điều tiếp theo này được lấy cảm hứng từ Jonathan Allan .

k=32
while k:print[[i for i in range(61)if i&k][j::5]for j in range(5)];k/=2

Hãy thử trực tuyến!

Bất kỳ ý kiến ​​được đánh giá rất cao.


6

Than , 26 byte

E⁶E⁵⪫E⁶§⁺§⪪Φ⁶¹&πX²ι⁵ν⟦*⟧λ 

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Tôi đã thử tính toán các mục trực tiếp nhưng đây đã là 27 byte trước khi điều chỉnh *ở phía dưới bên phải. Đầu ra mỗi hàng được nối với khoảng trắng và một dòng trống giữa các thẻ. Giải trình:

E⁶                          Loop over 6 cards
  E⁵                        Loop over 5 rows
     E⁶                     Loop over 6 columns
           Φ⁶¹              Filter over 0..60 where
               π            Current value
              &             Bitwise And
                 ²          Literal 2
                X           Raised to power
                  ι         Card index
          ⪪        ⁵        Split into groups of 5
         §          ν       Indexed by column
        ⁺                   Concatenated with
                      *     Literal string `*`
                     ⟦ ⟧    Wrapped in an array
       §                λ   Indexed by row
    ⪫                       Joined with spaces
                            Implicitly print

Tôi đã thêm quy tắc đó *cho vui sau khi tôi thấy các ngôi sao trên thẻ thực tế. Đã tự hỏi nếu có bất kỳ ngôn ngữ sử dụng nó, nhưng tôi rất vui khi thấy ít nhất một ngôn ngữ đã làm. :) Câu trả lời hay!
Kevin Cruijssen

1
@KevinCruijssen Than không có toán tử chuyển vị, và chuyển vị golf nhất yêu cầu một mảng hình chữ nhật có kích thước đã biết, vì vậy tôi cần thêm một cái gì đó để tạo ra kích thước, và *ít nhất là ngắn như mọi thứ khác.
Neil

Tôi không nghĩ đây là 26 byte ...
Tvde1

@ Tvde1 Than, giống như nhiều esolang trên trang web này, sử dụng trang mã tùy chỉnh. Các ký tự từ trang đó có giá 1 byte, trong khi các ký tự khác có giá lên tới 4 byte.
Neil

6

05AB1E , 16 byte

60L2вíƶ0ζε0K5ô®ζ

Hãy thử trực tuyến!

Giải trình

60L                 # push [1 ... 60]
   2в               # convert each to a list of binary digits
     í              # reverse each
      ƶ             # multiply each by its 1-based index
       0ζ           # transpose with 0 as filler
         ε          # apply to each list
          0K        # remove zeroes
            5ô      # split into groups of 5
              ®ζ    # zip using -1 as filler

05AB1E , 17 byte

6F60ÝNoôāÈϘ5ô®ζ,

Hãy thử trực tuyến!

Giải trình

6F                  # for N in [0 ... 5] do
  60Ý               # push [0 ... 60]
     Noô            # split into groups of 2^N numbers
        āÈÏ         # keep every other group
           ˜        # flatten
            5ô      # split into groups of 5
              ®ζ    # transpose with -1 as filler
                ,   # print

5

Husk , 13 byte

ṠMöTC5Wnünḣ60

Hãy thử trực tuyến!

Giải trình

          ḣ60  Range [1..60]
        ü      Uniquify using equality predicate
         n     bitwise AND: [1,2,4,8,16,32]
 M             For each number x in this list,
Ṡ     W        take the indices of elements of [1..60]
       n       that have nonzero bitwise AND with x,
    C5         cut that list into chunks of length 5
  öT           and transpose it.


5

Japt , 14 byte

6Æ60õ f&2pX)ó5

Thử nó

6Æ              Create a range from 0 to 5 (inclusive) and map each X into
  60õ             Elements in the range [1..60]
      f             Where
       &2pX)          The number bitwise AND with X is not 0
  ó5              Split into 5 arrays, where each array contains every 5th element

-Q flag is just for formatting purposes

4

JavaScript (ES6),  90  88 byte

_=>[1,2,4,8,16,32].map(n=>(g=i=>i<60?g(++i,i&n?m[y%5]=[...m[y++%5]||[],i]:0):m)(y=m=[]))

Hãy thử trực tuyến!

Đã bình luận

_ =>                        // anonymous function taking no argument
  [1, 2, 4, 8, 16, 32]      // list of powers of 2, from 2**0 to 2**5
  .map(n =>                 // for each entry n in this list:
    ( g = i =>              //   g = recursive function taking a counter i
      i < 60 ?              //     if i is less than 60:
        g(                  //       recursive call:
          ++i,              //         increment i
          i & n ?           //         if a bitwise AND between i and n is non-zero:
            m[y % 5] =      //           update m[y % 5]:
            [ ...m[y++ % 5] //             prepend all previous values; increment y
              || [],        //             or prepend nothing if it was undefined so far
              i             //             append i
            ]               //           end of update
          :                 //         else:
            0               //           do nothing
        )                   //       end of recursive call
      :                     //     else:
        m                   //       return m[]
    )(y = m = [])           //   initial call to g with i = y = m = []
                            //   (i and y being coerced to 0)
  )                         // end of map()


4

C (gcc) , 95 byte

i,j,k;f(int o[][5][6]){for(i=6;i;)for(o[--i][4][5]=j=k=-1;j<60;)++j&1<<i?o[i][++k%5][k/5]=j:0;}

Hãy thử trực tuyến!

Trả về ma trận dưới dạng mảng int 3D trong o.

4 ma trận cuối cùng có -1 là giá trị cuối cùng của chúng.

Đã lưu 2 byte nhờ Kevin Cruijssen.

Đã lưu 7 8 byte nhờ Arnauld.


Bạn có thể lưu 2 byte bằng cách thay đổi o[i][4][5]=-1;for(j=k=0;thành for(o[i][4][5]=-1,j=k=0;dấu ngoặc có thể được loại bỏ. Câu trả lời tốt đẹp btw, +1 từ tôi.
Kevin Cruijssen


(Lưu ý rằng tôi không chắc chắn 100% nếu vượt qua một mảng 3D đã được phân bổ với kích thước chính xác được cho phép. Nhưng tôi sẽ để những người chơi gôn C thường xuyên cung cấp cái nhìn sâu sắc hơn về điều đó.)
Arnauld

@Arnauld Tôi đã suy nghĩ về điều đó, nhưng đã quyết định chống lại nó.
Matej Mulej

tốt hơn hết là để ra ngoài #includeđể cho thấy rằng nó hoạt động mà không có nó
ASCII - chỉ

3

CJam (18 byte)

6{61{2A#&},5/zp}fA

Bản demo trực tuyến . Đây là một chương trình đầy đủ mà đầu ra cho thiết bị xuất chuẩn.

Mổ xẻ

6{             }fA    # for A = 0 to 5
  61{2A#&},           #   filter [0,61) by whether bit 2^A is set
           5/z        #   break into chunks of 5 and transpose to get 5 lists
              p       #   print

3

Thạch , 13 byte

60&ƇⱮs€5LÐṂZ€

Một liên kết niladic mang lại một danh sách (6) danh sách các số nguyên. (Nó xuất ra tùy chọn mặc định không có *hoặc không có phụ.)

Hãy thử trực tuyến!

Làm sao?

Mỗi ma trận chứa, theo thứ tự chính cột, các số lên đến 60 chia sẻ bit set đơn với số trên cùng bên trái (tối thiểu).

Chương trình này đầu tiên làm cho tất cả 60 danh sách các số có thể có trong [1,60]chia sẻ bất kỳ bit-set nào với số chỉ mục của chúng. Sau đó nó tách từng phần thành từng phần của5và chỉ giữ lại những cái có độ dài tối thiểu - sẽ là những cái mà chỉ mục chỉ có một tập bit duy nhất (và do đó cũng là giá trị tối thiểu của nó). Cuối cùng, nó chuyển đổi từng thứ để đưa chúng vào thứ tự chính cột.

60&ƇⱮs€5LÐṂZ€ - Link: no arguments
60            - set the left argument to 60
    Ɱ         - map across ([1..60]) with:  (i.e. [f(60,x) for x in [1..60]])
   Ƈ          -   filter keep if:  (N.B. 0 is falsey, while non-zeros are truthy)
  &           -     bitwise AND
      €       - for each:
     s 5      -   split into chunks of five
         ÐṂ   - keep those with minimal:
        L     -   length
           Z€ - transpose each

Rất nhiều số 15 mà không nhận ra thủ thuật "tối thiểu theo chiều dài khi chia thành fives":

5Ż2*Ɱ60&ƇⱮs€5Z€
6µ’2*60&Ƈ)s€5Z€
60&ƇⱮ`LÞḣ6s€5Z€

... Và, trong khi cố gắng tìm kiếm ngắn hơn, tôi đã nhận được 13 cái khác mà không cần mánh khóe nào cả:

60B€Uz0Ts5ZƊ€

3

Ngôn ngữ Wolfram (Mathicala) , 88 byte

Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Sow[,NumberExpand[,2]]~Do~{,60},Except@0]

Tôi đã tự do thêm một liên kết TIO (dựa trên câu trả lời của @ J42161217 ). +1 từ tôi.
Kevin Cruijssen


@ Mr.Xcoder Cảm ơn. Tôi đã sử dụng ~thủ thuật này ở một nơi khác và thay thế biến kbằng Null. Xin lỗi, không có thời gian để thêm một liên kết tio.
Bruno Le Floch

2

Ngôn ngữ Wolfram (Mathicala) , 99 byte

Transpose@Partition[#~FromDigits~2&/@Last@GatherBy[{0,1}~Tuples~6,#[[-k]]&],5]~Table~{k,6}/. 61->-1

Hãy thử trực tuyến!


Bạn có thể lưu một vài char bằng cách: làm Transpose@thay vì Transpose[...]; đệm đến 30 mục trước khi phân vùng; sử dụng Table[...,{k,6}]để tránh cần thiết k=#.
Bruno Le Floch

@Bruno Le Floch Bảng có thể lưu một byte. Bạn đã thử chuyển đổi @? Bởi vì nó không hoạt động nếu bạn xem cẩn thận. Tôi là afk nhưng sẽ chơi gôn sau
J42161217

Xin lỗi, Transpose@hoạt động sau khi bạn di chuyển PadRightbên trong Partition. Một nhận xét khác là câu hỏi dường như không cho phép ""giữ chỗ; bạn có thể thay thế nó bằng cách -1không mất bất kỳ byte nào.
Bruno Le Floch


2

R , 73 byte

`!`=as.raw;lapply(0:5,function(i)matrix(c((a=1:60)[(!a&!2^i)>0],-1),5,6))

Tôi không hoàn toàn chắc chắn liệu tôi có đáp ứng yêu cầu về thứ tự hay không, vì R mặc định điền vào ma trận theo cột, vì vậy thứ tự xuất hiện trên thẻ giống như cách phân bổ ma trận trong R.

Hãy thử trực tuyến!


Đầu ra có vẻ tốt. Và nếu R điền ma trận theo các cột trước hàng thay vì hàng trước cột như hầu hết các ngôn ngữ khác, thì điều đó có nghĩa là nó là ngôn ngữ lập trình tốt để sử dụng cho thử thách này, tôi đoán vậy. :)
Kevin Cruijssen

2

T-SQL, ( 1.168 1.139 byte)

Tôi chỉ muốn biết tôi có thể làm điều đó.

Phiên bản tối ưu hóa

 WITH g AS(SELECT 1 AS n UNION ALL SELECT n+1 FROM g WHERE n+1<61),B as(SELECT cast(cast(n&32 as bit)as CHAR(1))+cast(cast(n&16 as bit)as CHAR(1))+cast(cast(n&8 as bit)as CHAR(1))+cast(cast(n&4 as bit)as CHAR(1))+cast(cast(n&2 as bit)as CHAR(1))+cast(cast(n&1 as bit)as CHAR(1))as b FROM g),P as(SELECT * from (values(1), (2), (4), (8), (16), (32)) as Q(p)),S as(select distinct p,p+(substring(b,6,1)*1)*(case when p=1 then 0 else 1 end)+(substring(b,5,1)*2)*(case when p=2 then 0 else 1 end)+(substring(b,4,1)*4)*(case when p=4 then 0 else 1 end)+(substring(b,3,1)*8)*(case when p=8 then 0 else 1 end)+(substring(b,2,1)*16)*(case when p=16 then 0 else 1 end)+(substring(b,1,1)*32)*(case when p=32 then 0 else 1 end)as e from P cross apply B),D as(select * from S where e>=p and e<61),R as(select p,(row_number()over(partition by p order by cast(e as int)))%5 as r,e from D),H as(select k.p,'['+stuff((select','+cast(l.e as varchar)from R l where l.p=k.p and l.r=k.r for xml path('')),1,1,'')+']'as s from R k group by k.p,k.r)select stuff((select','+cast(x.s as varchar)from H x where x.p=z.p for xml path('')),1,1,'')from H z group by z.p

Bản demo trực tuyến

Hãy thử trực tuyến!

Phiên bản dài dòng - với ghi chú là nhận xét SQL

WITH gen -- numbers 1 to 60
AS (
    SELECT 1 AS num
    UNION ALL
    SELECT num+1 FROM gen WHERE num+1<=60
),
BINARIES -- string representations of binaries 000001 through 111111
as (
SELECT 
    +cast( cast(num & 32 as bit) as CHAR(1))
    +cast( cast(num & 16 as bit)  as CHAR(1))
    +cast( cast(num & 8 as bit)  as CHAR(1))
    +cast( cast(num & 4 as bit)  as CHAR(1))
    +cast( cast(num & 2 as bit)   as CHAR(1))
    +cast(cast(num & 1 as bit)  as CHAR(1)) as binry FROM gen
),
POWERS -- first 6 powers of 2
as (
SELECT * from (values(1), (2), (4), (8), (16), (32)) as Q(powr)
),
SETELEMENTS -- cross apply the six powers of 2 against the binaries
-- returns 2 cols. col 1 = the power of 2 in question.
-- col 2 is calculated as that power of 2 plus the sum of each power of 2 other than the current row's power value, 
-- but only where a given power of 2 is switched "on" in the binary string, 
-- ie. where the first digit in the string represents 32, the second represents 16 and so on. 
-- That is, if the binary is 100100 then the number will be 
-- the sum of (32 x 1) + (16 x 0) + (8 x 0) + (4 x 1) + (2 x 0) + (1 x 0) 
-- but if the current row's power is 32 or 4, then just that number (32 or 4) is excluded from the sum.
-- rows are distinct.
as (
select distinct powr,
powr+
 (substring(binry,6,1) * 1) * (case when powr = 1 then 0 else 1 end)
 +(substring(binry,5,1) * 2) * (case when powr = 2 then 0 else 1 end)
 +(substring(binry,4,1) * 4) * (case when powr = 4 then 0 else 1 end)
 +(substring(binry,3,1) * 8) * (case when powr = 8 then 0 else 1 end)
 +(substring(binry,2,1) * 16) * (case when powr = 16 then 0 else 1 end)
 +(substring(binry,1,1) * 32) * (case when powr = 32 then 0 else 1 end) as elt
from POWERS cross apply BINARIES
),
DISTINCTELEMENTS -- purge calculated numbers smaller than the power of 2 or greater than 60
as (
select * from SETELEMENTS where elt >= powr and elt < 61
)--,
,
ROWNUMBERED -- for each power, number the rows repeatedly from 0 through 5, then back to 0 through 5 again, etc
as (
select powr, (row_number() over (partition by powr order by cast(elt as int)))%5 as r, elt  from DISTINCTELEMENTS
),
GROUPEDSETS -- for each row number, within each power, aggregate the numbers as a comma-delimited list and wrap in square brackets - the inner arrays
as (
select r1.powr, '['+stuff((select ',' + cast(r2.elt as varchar) from ROWNUMBERED r2 where r2.powr = r1.powr and r2.r = r1.r for xml path('')),1,1,'')+']' as s
from ROWNUMBERED r1
group by r1.powr,r1.r
)
select -- now aggregate all the inner arrays per power
stuff((select ',' + cast(g2.s as varchar) from GROUPEDSETS g2 where g2.powr = g1.powr for xml path('')),1,1,'')
from GROUPEDSETS g1
group by g1.powr

Voila!

Lưu ý 1: Một số logic liên quan đến kết xuất dấu ngoặc vuông và dấu phẩy.

Lưu ý 2: Các phiên bản SQLServer mới hơn có các cách tiếp cận nhỏ gọn hơn để tạo danh sách được phân tách bằng dấu phẩy. (Điều này đã được tạo trên SQL Server 2016.)

Lưu ý 3: Mảng cho một thẻ nhất định không được sắp xếp (không phù hợp với thông số kỹ thuật). Các số trong một mảng được sắp xếp chính xác. Trong trường hợp này, mỗi "thẻ" của câu hỏi, kết xuất các mảng của nó trên một hàng riêng biệt trong kết quả.

Ngắn hơn để mảng mã cứng?

Vâng.

Tạm biệt tôi


Jeez, nó sẽ không ngắn hơn để chỉ mã hóa kết quả?
Jo King

Haha. Không phải là niềm vui, cũng không thể mở rộng.
youcantryreachingme

Tôi không hoàn toàn hiểu - bạn đang nói rằng giải pháp của bạn chỉ hoạt động tình cờ hay bạn tin chắc rằng bạn đã làm đúng các thông số kỹ thuật?
Jonathan Frech

@JonathanFrech - Tôi không mã hóa rõ ràng cho thứ tự các số, mặc dù có thể có một điều kiện ngầm trong ngôn ngữ dẫn đến một thứ tự được đảm bảo. Họ kết xuất theo thứ tự tăng dần chính xác. Một cách riêng biệt, sau khi đăng, tôi nhận ra rằng tôi đã hiểu sai về cách dữ liệu được trình bày (trong các mảng sọc trên mỗi thẻ, thay vì một bộ duy nhất cho mỗi thẻ) - vì vậy vẫn chưa giải quyết được vấn đề đó. Như vậy, kết quả hiện đang hiển thị các số chính xác, theo thứ tự tăng dần, trong mỗi 6 bộ dự kiến ​​- xem fiddle sql được liên kết. Vẫn phải làm: chia các bộ thành 5 tập con mỗi bộ.
youcantryreachingme

Tôi đánh giá cao nỗ lực của bạn nhưng nếu giải pháp của bạn không chính xác, vui lòng sửa nó hoặc xóa bài viết của bạn. Chúng tôi thường không cho phép câu trả lời không hợp lệ để nán lại.
Jonathan Frech




1

MATLAB, 155 byte

cellfun(@disp,cellfun(@(x)x-repmat(62,5,6).*(x>60),cellfun(@(x)reshape(find(x,30),[5 6]),mat2cell(dec2bin(1:62)-48,62,ones(1,6)),'Uniform',0),'Uniform',0))

Điều này có thể ngắn hơn nhiều dòng nhưng tôi muốn làm điều đó trong một dòng mã.


1
Có lẽ bạn có thể thêm một liên kết TIO với mã kiểm tra, để tôi có thể xác minh đầu ra?
Kevin Cruijssen

1

05AB1E , 14 byte

žOε60LDNo&ĀÏ5ι

Hãy thử trực tuyến!


1
Tại sao žOthay vì chỉ 6L? Tôi biết bạn không sử dụng chúng trong bản đồ của mình, nhưng tôi tò mò tại sao bạn lại sử dụng aeiouyđể tạo một danh sách với 6 giá trị. xD Câu trả lời hay, btw!
Kevin Cruijssen

1
@KevinCruijssen Không có lý do đặc biệt, tôi chỉ nghĩ đó là buồn cười hơn 6L, , , , hoặc 9!.
Grimmy

Nó chắc chắn lọt vào mắt tôi, đó là điều chắc chắn. ;)
Kevin Cruijssen

@KevinCruijssen Tôi chỉ nhận ra тœ, ₅œ, ₁œ, cũng làm việc, những người đang khá mát quá (:
Grimmy

₆bcũng sẽ hoạt động tốt;)
Kevin Cruijssen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.