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.

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!


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.


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.


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

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

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.


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

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


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.


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


(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

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Ɗ€

3

Wolfram Language (Mathematica) , 88 bajtów

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

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!


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!


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.


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

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.


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!


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, 6и, 5Ý, 5°, 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.