Liczby binarne Magic Trick

28

Wyzwanie jest po prostu; wyprowadza następujące sześć tablic liczb całkowitych 2D:

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

Co to są tablice liczb całkowitych 2D? Są to liczby używane w magicznej sztuczce z kartami zawierającymi te liczby:

wprowadź opis zdjęcia tutaj

Magiczna sztuczka prosi kogoś, aby pomyślał o liczbie z zakresu [1, 60], i daje temu, kto wykonuje magiczną sztuczkę, wszystkie karty, które zawierają ten numer. Osoba wykonująca magiczną sztuczkę może następnie zsumować lewe górne numery (wszystkie o sile 2) podanych kart, aby uzyskać liczbę, o której myślał. Dodatkowe wyjaśnienie, dlaczego to działa, można znaleźć tutaj.

Zasady konkursu:

  • Możesz wyprowadzić sześć tablic liczb całkowitych 2D w dowolnym rozsądnym formacie. Może być drukowany z ogranicznikami; może być tablicą liczb całkowitych 3D zawierającą sześć tablic liczb całkowitych 2D; może być ciągiem-listą linii; itp.
  • Możesz wypełnić dolną prawą pozycję ostatnich czterech kart ujemną wartością w zakresie [-60, -1]lub znaku, '*'zamiast je pomijać, aby tablice liczb całkowitych 2D były prostokątnymi macierzami (nie, nie możesz ich wypełnić 0ani nie -integer jak null/ undefinedjako alternatywa, z wyjątkiem tego, *że gwiazdka jest również używana w rzeczywistych kartach).
  • Kolejność liczb w macierzach jest obowiązkowa. Chociaż nie ma to znaczenia dla fizycznej sztuczki magicznej, to wyzwanie widzę głównie jako - , stąd ograniczenie zamówienia.
    Kolejność samych macierzy na liście wyników może być w dowolnej kolejności, ponieważ z lewej górnej karty jasno jest, która macierz jest.

Główne zasady:

  • To jest , więc wygrywa najkrótsza odpowiedź w bajtach.
    Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania.
  • Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
  • Domyślne luki są zabronione.
  • Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
  • Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Kevin Cruijssen
źródło
Związane z. (Jak w tym przypadku, odnosi się to do tej samej magicznej sztuczki, ale myślę, że nie jest to przydatne, aby uzyskać inspirację do tego wyzwania. To wyzwanie ma na celu wygenerowanie prawdziwej / falsey wartości, niezależnie od tego, czy liczba npojawia się na kkarcie; gdzie moje wyzwanie jest Wyzwanie KC do
wygenerowania
1
@DigitalTrauma Hm, nie jestem pewien, czy to naprawdę duplikat, ponieważ Twoim wyzwaniem jest ascii-art (nie oznaczony jako taki, ale tak jest), podczas gdy ten pozwala na wyświetlanie tablicy w bardziej łagodnym formacie (nie tylko cztery zasadniczo identyczne sposoby). Nie mogę jednak głosować na ponowne otwarcie, ponieważ mam młotek.
Erik the Outgolfer
@EriktheOutgolfer Woops .. Zapomniałem, że mam również młotek>.> Czasami możliwość zamknięcia / otwarcia młota jest dość irytująca .. Mimo to miał już 2 głosy, więc z twoim i moim dodatkowo były 4 głosy otwarte. Ale jeśli ktoś chce go ponownie zamknąć, nie mam nic przeciwko. Są rzeczywiście bardzo podobne, chociaż jego wyzwanie jest rzeczywiście [ascii-art]wyzwaniem przy ścisłych regułach wyjściowych (MD5), w których moje są bardzo elastyczne (a wiersze / kolumny są zamieniane, a zasięg jest [1,60]zamiast [1,63]; dość niewielkie różnice, ale nadal).
Kevin Cruijssen
Wygląda na to, że nie próbowałeś VTRO z postawą „to moje cenne wyzwanie !!!” przynajmniej ...: P
Erik the Outgolfer
1
Ja też zapomniałem o młocie. Nadal uważam, że jest to wystarczająco blisko, aby zagłosować za duplikowaniem, choć odłożę się do mądrości społeczności, jeśli zostanie ona ponownie otwarta.
Cyfrowa trauma

Odpowiedzi:

6

MATL , 12 11 bajtów

-1 bajt dzięki samemu mistrzowi :)

60:B"@fQ6eq

Wyjaśnienie:

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

Wypróbuj online!

wada
źródło
8

Perl 6 , 63 46 bajtów

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

Wypróbuj online!

Dane wyjściowe w postaci tablic 2D na wielu liniach, w razie potrzeby ostatnia tablica każdego z nich zostaje odcięta.

Jo King
źródło
7

Python 2 , 76 bajtów

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

Wypróbuj online!

Metoda polega na utworzeniu listy wszystkich możliwych liczb, r(61)a następnie zmniejszeniu jej do listy numerów dla karty i&2**k.

Następnie, stosując podział na listy, ta lista liczb 1D jest przestawiana na prawidłowy rozmiar karty 6x5 [card nums][j::5]for j in r(5).

Następnie ten generator jest po prostu powtarzany dla 6 kart for k in r(6).


Chociaż nie mogłem znaleźć rozwiązań mniejszych niż 76 bajtów, oto dwa inne, które również mają 76 bajtów:

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

Wypróbuj online!

Ten następny jest inspirowany przez Jonathana Allana .

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

Wypróbuj online!

Wszelkie uwagi są mile widziane.

The Matt
źródło
6

Węgiel drzewny , 26 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Próbowałem obliczać wpisy bezpośrednio, ale było to już 27 bajtów, zanim dostosowałem się do wartości *w prawym dolnym rogu. Wyjście każdego wiersza połączone spacjami i pustą linią między kartami. Wyjaśnienie:

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
Neil
źródło
Dodałem tę zasadę *dla zabawy po tym, jak zobaczyłem gwiazdy na rzeczywistych kartach. Zastanawiałem się, czy będą używane jakieś języki, ale cieszę się, że przynajmniej jeden z nich to zrobił. :) Niezła odpowiedź!
Kevin Cruijssen
1
@KevinCruijssen Charcoal nie ma operatora transpozycji, a najbardziej golfowa transpozycja wymaga prostokątnego układu o znanym rozmiarze, więc muszę dodać coś, aby uzupełnić rozmiar, i *jest co najmniej tak krótki, jak wszystko inne.
Neil
Nie sądzę, że to 26 bajtów ...
Tvde1
@ Tvde1 Charcoal, podobnie jak wiele esolangów na tej stronie, używa niestandardowej strony kodowej. Znaki z tej strony kosztują 1 bajt, podczas gdy inne znaki do 4 bajtów.
Neil
6

05AB1E , 16 bajtów

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

Wypróbuj online!

Wyjaśnienie

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 bajtów

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

Wypróbuj online!

Wyjaśnienie

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
Emigna
źródło
5

Łuska , 13 bajtów

ṠMöTC5Wnünḣ60

Wypróbuj online!

Wyjaśnienie

          ḣ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.
Zgarb
źródło
5

Japt , 14 bajtów

6Æ60õ f&2pX)ó5

Spróbuj

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
Wcielenie ignorancji
źródło
4

JavaScript (ES6),  90  88 bajtów

_=>[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=[]))

Wypróbuj online!

Skomentował

_ =>                        // 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()
Arnauld
źródło
4

C (gcc) , 95 bajtów

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

Wypróbuj online!

Zwraca macierze jako trójwymiarową tablicę int w o.

Ostatnie 4 macierze mają -1 jako ostatnią wartość.

Zaoszczędzono 2 bajty dzięki Kevinowi Cruijssenowi.

Zaoszczędź 7 8 bajtów dzięki Arnauldowi.

Matej Mulej
źródło
Możesz zapisać 2 bajty, zmieniając o[i][4][5]=-1;for(j=k=0;na, for(o[i][4][5]=-1,j=k=0;aby można było usunąć nawiasy. Dobra odpowiedź btw, +1 ode mnie.
Kevin Cruijssen
1
95 bajtów
Arnauld
(Pamiętaj, że nie jestem w 100% pewien, czy dozwolone jest przekazywanie tablicy 3D, która ma już prawidłowe wymiary. Ale pozwolę zwykłym golfistom C zapewnić lepszy wgląd w to.)
Arnauld
@Arnauld Myślałem o tym, ale postanowiłem tego nie robić.
Matej Mulej
lepiej pominąć, #includeaby pokazać, że działa bez niego
tylko ASCII
3

CJam (18 bajtów)

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

Demo online . Jest to pełny program, który wyświetla wyjście na standardowe wyjście.

Sekcja

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
Peter Taylor
źródło
3

Galaretka , 13 bajtów

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

Niladyczny link, który daje listę (6) list list liczb całkowitych. (Wyprowadza użycie domyślnej opcji braku *wypełniacza lub wypełnienia ujemnego).

Wypróbuj online!

W jaki sposób?

60

60[1,60]5

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

Wiele 15 bez uświadomienia sobie sztuczki „minimalnej długości przy podziale na pięć”:

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

... i próbując znaleźć krótszego, dostałem kolejne 13, nie potrzebując żadnej sztuczki:

60B€Uz0Ts5ZƊ€
Jonathan Allan
źródło
3

Wolfram Language (Mathematica) , 88 bajtów

Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Sow[,NumberExpand[,2]]~Do~{,60},Except@0]
Bruno Le Floch
źródło
Pozwoliłem sobie dodać link TIO (na podstawie odpowiedzi @ J42161217 ). +1 ode mnie
Kevin Cruijssen
@ Mr.Xcoder Thanks. Użyłem tej ~sztuczki w jeszcze jednym miejscu i zastąpiłem zmienną kprzez Null. Przepraszamy, nie ma czasu na dodanie linku tio.
Bruno Le Floch
2

Wolfram Language (Mathematica) , 99 bajtów

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

Wypróbuj online!

J42161217
źródło
Możesz zaoszczędzić kilka znaków, wykonując: robiąc Transpose@zamiast Transpose[...]; wypełnianie do 30 wpisów przed partycjonowaniem; za pomocą, Table[...,{k,6}]aby uniknąć potrzeby k=#.
Bruno Le Floch
@Bruno Le Floch Table może zaoszczędzić jeden bajt. Czy próbowałeś przetransponować @? Ponieważ to nie działa, jeśli oglądasz uważnie. Jestem afk, ale
zagram w
Przepraszamy, Transpose@działa po wprowadzeniu się do PadRightśrodka Partition. Innym komentarzem jest to, że pytanie nie wydaje się ""uwzględniać symbolu zastępczego; możesz go zastąpić -1nie tracąc żadnego bajtu.
Bruno Le Floch
2

R , 73 bajty

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

Nie jestem do końca pewien, czy spełniłem wymóg kolejności, ponieważ R domyślnie wypełnia macierze według kolumny, więc kolejność tak, aby pojawiała się fizycznie na kartach, jest taka sama, jak sposób przydzielania macierzy w R.

Wypróbuj online!

Aaron Hayman
źródło
Wyjście wygląda dobrze. A jeśli R wypełnia macierze kolumnami przed wierszem zamiast wiersza przed kolumną, jak prawie we wszystkich innych językach, oznacza to po prostu, że jest to dobry język programowania do tego wyzwania. :)
Kevin Cruijssen
2

T-SQL, ( 1168 1139 bajtów)

Chciałem tylko wiedzieć, że mogę to zrobić.

Wersja zoptymalizowana

 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

Demo online

Wypróbuj online!

Pełna wersja - z notatkami jako komentarzami 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!

Uwaga 1: Część logiki dotyczy renderowania nawiasów kwadratowych i przecinków.

Uwaga 2: Nowsze wersje SQLServer mają bardziej kompaktowe podejście do tworzenia list rozdzielanych przecinkami. (Zostało to utworzone na SQL Server 2016.)

Uwaga 3: Tablice dla danej karty nie są sortowane (co jest zgodne ze specyfikacją). Liczby w tablicy są poprawnie posortowane. W takim przypadku każda „karta” pytania renderuje tablice w osobnym wierszu wyników.

Skróty do tablic na sztywno?

Tak.

Bajcie mnie.

youcantryreachingme
źródło
Jezu, czy nie byłoby krótsze po prostu zakodować wynik?
Jo King
Ha ha. Ani tak zabawne, ani rozszerzalne.
youcantryreachingme
Nie do końca rozumiem - czy mówisz, że twoje rozwiązanie działa tylko przypadkowo, czy jesteś przekonany, że poprawnie przestrzegałeś specyfikacji?
Jonathan Frech
@JathanathanFrech - Nie kodowałem wyraźnie kolejności numerów, chociaż w języku może istnieć domniemany warunek, który skutkuje gwarantowaną kolejnością. Renderowane są we właściwej kolejności rosnącej. Osobno, po opublikowaniu, zdałem sobie sprawę, że źle zrozumiałem, w jaki sposób mają być prezentowane dane (w szykach w paski na kartę, a nie w jednym zestawie na kartę) - więc jeszcze nie rozwiązałem tego problemu. Jako taki wynik obecnie renderuje prawidłowe liczby, w porządku rosnącym, w każdym z 6 oczekiwanych zestawów - patrz połączone skrzypce sql. Pozostało do zrobienia: podziel zestawy na 5 podzbiorów każdy.
youcantryreachingme
Doceniam twój wysiłek, ale jeśli twoje rozwiązanie jest nieprawidłowe, napraw je lub usuń post. Zasadniczo nie zezwalamy na niepoprawne odpowiedzi na pytania.
Jonathan Frech
1

Czerwony , 108 107 bajtów

n: 32 until[b: collect[repeat k 60[if n and k = n[keep k]]]loop 5[print
extract b 5 b: next b]1 > n: n / 2]

Wypróbuj online!

Galen Iwanow
źródło
1

MATLAB, 155 bajtów

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

Może to być krótsze niż wiele wierszy, ale chciałem to zrobić w jednym wierszu kodu.

Paweł
źródło
1
Czy mógłbyś dodać link TIO z kodem testowym, aby zweryfikować dane wyjściowe?
Kevin Cruijssen
1

05AB1E , 14 bajtów

žOε60LDNo&ĀÏ5ι

Wypróbuj online!

Ponury
źródło
1
Dlaczego žOzamiast po prostu 6L? Wiem, że nie używasz ich na mapie, ale jestem ciekawy, dlaczego aeiouystworzyłeś listę z 6 wartościami. xD Ładna odpowiedź, btw!
Kevin Cruijssen
1
@KevinCruijssen bez konkretnego powodu, po prostu uważam, że było śmieszniejsze niż 6L, , , , lub 9!.
Grimmy
To z pewnością przykuło moją uwagę, to na pewno. ;)
Kevin Cruijssen
@KevinCruijssen zdałem sobie sprawę тœ, ₅œ, ₁œ, również praca, to są całkiem fajne zbyt (:
Grimmy
₆bteż by działał;)
Kevin Cruijssen