Mamy nadzieję, że wszyscy znamy notację komórkową arkusza kalkulacyjnego „A1”.
Jest to po prostu alfanumeryczna reprezentacja pozycjonowania wspomnianej komórki w siatce. Litera (litery) reprezentują pozycję kolumny komórki, a liczba reprezentuje wiersz.
Część „literowa” może składać się z 1 lub więcej liter z 26-literowego alfabetu angielskiego, z których wszystkie muszą być dużymi literami. Odwzorowują się one na liczby za pomocą 26-adycznej numeracji bijective. Część „liczbowa” może składać się z dowolnej dodatniej, niezerowej liczby całkowitej.
Wyzwanie, napisz program, który podał notację A1 dowolnej komórki jako pojedynczego łańcucha, może wyprowadzić ciąg zawierający pozycję kolumny reprezentowaną przez liczbę, następnie spację, a następnie numer wiersza.
Przykładowe wejścia / wyjścia poniżej:
A1
>>1 1
B10
>>2 10
AC4
>>29 4
AAC753
>>705 753
F123
>>6 123
GL93
>>194 93
To jest moje pierwsze wyzwanie, stąd względna prostota i potencjalna słabość kryteriów.
EDYCJA : Ciąg musi składać się z liter i cyfr, a kryterium wygranej jest najkrótsza długość kodu (jeśli to może być rzecz)
EDYCJA : Związana z tym, ale wykonuje proces odwrotny z innym indeksem początkowym. Niektórzy mogą twierdzić, że ten fakt sprawia, że połączone puzzle są bardziej interesujące.
["A", "1"]
Odpowiedzi:
05AB1E ,
1211 bajtówWykorzystuje kodowanie 05AB1E . Wypróbuj online!
źródło
Microsoft Excel, 43 bajty.
Nie mogłem się powstrzymać, musiałem po prostu użyć odpowiedniego narzędzia do pracy. Pobiera dane na A1.
Przypadki testowe
źródło
Microsoft Excel, 40 bajtów
Wersja portugalska brazylijska.
Przetłumaczona (a zatem golfowa) wersja rozwiązania ATaco .
źródło
Python 2 ,
949173 bajtów-3 bajty dzięki Jonathanowi Allanowi
-18 bajtów dzięki tsh
Wypróbuj online!
To nadużywa sposobu, który
.strip
działa, usuwając wszystkie cyfry,a=s(`3**39`)
gdzie`3**39`
jest tylko krótszy sposób generowania cyfr od0
do9
, spowoduje to zapisanie tylko znaków,a
które zostaną użyte do usunięcia znaków z liczb nas(a)
źródło
strip
wkład był unikatowymi postaciami, więc3**39
powinien wykonać tę samą pracę.Arkusze Google, 43 bajty
Wypróbuj online!
A1
jest komórką wejściową. Mam nadzieję, że powyższy link działa, nigdy wcześniej nie próbowałem golfa za pomocą Arkuszy Google.źródło
=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1
dla 41 bajtów. arkusze wypełniają brakujące prawe pareny.JavaScript, 72 bajty
źródło
Proton , 113 bajtów
Wypróbuj online!
-19 bajtów pożyczenie algorytmu Rod ( uwaga do siebie: dodaj listcomps )
źródło
Dyalog APL, 44 bajty
Wypróbuj online!
źródło
(a~⎕D)
. Wyszukaj⎕A
zamiast⎕AV
. Bądź milczący. Zamień argument z,
. Sprowadza się do zaledwie 16 bajtów:~∘⎕A,⍨26⊥⎕A⍳~∘⎕D
Pyth - 31 bajtów
Pierwsza próba, bardzo naiwna.
Wypróbuj online tutaj .
źródło
Perl 5 , 35 + 1 (-p) = 36 bajtów
Wypróbuj online!
Do
map
traktuje oświadczenie kolumna jak numer base26 i konwertuje go do dziesiętnego. Podstawienie zastępuje litery cyframi. Dane wejściowe i wyjściowe są niejawne w ramach-p
flagi.źródło
Mathematica, 108 bajtów
Forma operatora,
StringReplace
która bierze część alfabetycznąc
łańcucha, konwertuje go na listę kodów znaków, odejmuje64
od każdego punktu kodowego, interpretuje wynik jako26
liczbę całkowitą bazową , konwertuje tę liczbę całkowitą na aString
, a następnieStringJoin
spację, po której następuje część numerycznar
.Za pomocą wyrażenia regularnego (także
108
bajtów):źródło
ToCharacterCode@c-64
czasami może zostać zredukowane doLetterNumber@c
.LetterNumber
jednak nie zawija wyniku,List
gdy wejście jest pojedynczym znakiem.Galaretka ,
1615 bajtówPełny program akceptujący ciąg jako argument i wypisujący wynik
Wypróbuj online!
W jaki sposób?
Uwaga: konwersja z listy liczb przy użyciu podstawowego atomu konwersji
ḅ
pozwala, aby miejsca znajdowały się poza oczekiwanym zakresem, więc konwersja z, powiedzmy,[2,26,1]
("BZA"
) przy użyciuḅ26
jest obliczana jako 2 × 26 2 + 26 × 26 1 + 1 × 26 0 = 2029, nawet gdyby „oczekiwana” reprezentacja byłaby[3,0,1]
.źródło
Mathematica,
77726968 bajtówPobiera listę znaków.
Wypróbuj na Wolfram Sandbox
Stosowanie
lub
Wyjaśnienie
W danych wejściowych zamień ...
Lista zawierająca dwie sekwencje
a
ib
(z 1 lub więcej elementów), na którąb
składają się tylko cyfry ... (Mathematica używa leniwego dopasowania wzorca, więc nie jest wymagane sprawdzaniea
)w...
Ustaw
f
funkcję konwersji cyfr na liczby całkowite.Konwertuj
a
na liczby literowe (a -> 1, b -> 2 itd.).Konwertuj powyższe z base-26 na dziesiętne i konwertuj
b
na dziesiętne.źródło
Haskell, 67 bajtów
Wypróbuj online.
źródło
Siatkówka , 85 bajtów
Wypróbuj online! Wyjaśnienie:
Oddziel litery od siebie i ostatni numer.
Konwertuj litery na dziesiętne.
Przekształć wszystko w jedno.
Chociaż są co najmniej trzy liczby, pomnóż pierwszą przez 26 i dodaj ją do drugiej.
Konwertuj wszystko na dziesiętne.
źródło
Rubinowy ,
5048 + 1 =5149 bajtówUżywa
-p
flagi. -2 bajty odm-chrzan
.Wypróbuj online!
źródło
i=i*26+b-64
oszczędza 2 bajty.> <>, 42 bajtów
Wypróbuj online
Wyjaśnienie:
Powyższa pętla odczyta pierwszą liczbę części liczbowej (np. „3” w „AB34”) przed zerwaniem i odejmie już 64 od niej, więc następny bit kodu musi sobie z tym poradzić
Ta pętla zaczyna się od wyprowadzenia znaku, który będzie albo pierwszym znakiem odczytanym przez pierwszą pętlę, albo znakiem odczytanym przez poprzednią iterację tej pętli.
źródło
Rubin,
646159 bajtówOszczędność 2 bajtów dzięki Value Ink.
źródło
$&
jest ostatnim dopasowaniem wyrażenia regularnego, więc używaj go zamiastm
zapisywać 2 bajty.Excel-VBA Natychmiastowe okno,
4445 bajtów (3635)Dodano 1 bajt, aby ukryć końcowy znak nowej linii
Lub dla 35 z wiodącymi białymi znakami
1 bajt zapisany dzięki @TaylorScott!
Oba pobierają dane z komórki A1, a następnie wysyłają do okna natychmiastowego VBE
źródło
Trim()
prawie wszystkich odpowiedzi numerycznych - a przy tym nie wybrałbymSet v=Range([A1]):?v.Column""&v.Row
twojego obecnego rozwiązania;
kiedy następujący znakColumn
nie może być częścią rutynowej nazwy. Zastanawiam się, czy jest jakaś postać, która mogłaby zrobić to samo, prawdopodobnie nie. Tak, domyślam się, że spacja wiodąca byłaby akceptowalna dla większości qus, ale w tym przypadku myślę, że jest to bardziej „Drukuj dokładnie ten ciąg”. Zapytałem (ostatni komentarz do pytania) i nie powiedziano mi, że nie ma spacji ani nowego wiersza.Lua, 127 bajtów
Idąc tam kilka fajnych ciągów znaków, używam funkcji, które zwykle nigdy nie są używane podczas gry w golfa w lua: D. Najlepszym sposobem na grę w golfa byłoby znalezienie innego sposobu na iterację nad kolumnową częścią danych wejściowych, przy jednoczesnym zachowaniu pozycji każdej litery. Nie zrobiłem ^^.
Wypróbuj online!
Wyjaśnienie
źródło