Symbole a litery

17

Symbole a litery

Te znaki ASCII zostały podzielone po raz kolejny ! Wasze zestawy to Litery i Symbole .

Listy

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Symbole

!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~

Zadanie polega na napisaniu dwóch programów:

  1. Wydrukuj każdy z listów dokładnie raz, bez użycia żadnego z nich w swoim programie.

  2. Wydrukuj każdy z symboli dokładnie raz, bez użycia żadnego z nich w swoim programie.

Zasady

  • W twoim programie lub wyniku mogą pojawić się białe znaki.
  • Znaki spoza ASCII są niedozwolone.
  • Dane wyjściowe trafiają do standardowego wyjścia lub do pliku jako zawartość lub nazwa pliku.
  • Brak wejścia.
  • Dane wyjściowe mogą zawierać tylko znaki ASCII z jednego zestawu lub drugiego.
  • Programy mogą być napisane w różnych językach lub w tym samym języku z jednym wyjątkiem:
  • Język białe znaki mogą być używane tylko do jednego z programów.
  • Obowiązują standardowe luki .

Punktacja

# of characters in program 1 +# of characters in program 2 =Score

Najniższy wynik wygrywa!

Uwaga:

Aby zachęcić do większej liczby zgłoszeń, nadal możesz opublikować odpowiedź zawierającą rozwiązanie dotyczące tylko jednego z programów. Nie będziesz w stanie wygrać, ale nadal będziesz w stanie pochwalić się czymś fajnym.

Podziękowania dla hobby Calvina za zainspirowanie tego pomysłu jego poprzednim pytaniem .

hmatt1
źródło
4
Nie jest to możliwe w większości języków ... Na przykład w Haskell = jest nieuniknione
dumny haskeller
1
@proudhaskeller częścią wyzwania jest wybór języka, w którym jest to możliwe.
hmatt1
(Zdaję sobie sprawę, że powinienem był pomyśleć o tym, gdy pytanie było w piaskownicy, ale) biorąc pod uwagę zasadę „białe znaki mogą pojawiać się w danych wyjściowych”, czy to oznacza, że ​​kolejność (liter | symboli) nie ma znaczenia?
FireFly,
@ FireFly każde zamówienie jest w porządku.
hmatt1,
Czy w twoim programie dozwolone są znaki kontrolne (punkty kodowe od 0 do 31 i 127)?
FUZxxl,

Odpowiedzi:

7

Razem: 53 znaki

Łącznie w jednym języku: 230 znaków, Pyth

Część 1: Skrypt golfowy, 15

91,65>123,97>++

Wyjścia:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Wyjaśnienie:

91,           Make the list, [0 1 .. 90]
65>           Take elements after the 65th, [65 66 .. 90]
123,97>       Same, but [97 98 .. 122]
+             Add the list above to the newline character that is automatically pushed to 
              the stack. List + str coerces to string by ascii encoding.
+             Same, for the other list.

Część 2: Pyth , 38

JhCeGLjkmCdbsrCdCPhGsrhCPeGChGsrJhhhhJ

Wyjścia:

 !"#$%&'()*+,-./0123456789:;<=>?@
[\]^_`
{|}~

Wyjaśnienie:

G = "abcdefghijklmnopqrstuvwxyz"   Implicit.
k = ""                             Implicit.
d = " "                            Implicit.
JhCeG                              J = 1 + chr(end(G))          # J = 123
L                                  def d(b): return
 jk                                                k.join(
   m                                                      map(lambda d:
    Cd                                                                 chr(d),
    b                                                                  b))
s                                  print(s(                    #print is implicit.
 rCd                               range(chr(d),                 # chr(d) = 32
 CPhG                                    chr(upper(head(G))))    # chr("A") = 65
srhCPeGChG                         print(s(range(1+chr(upper(end(G))),chr(head(G)))
srJhhhhJ                           print(s(range(J, 1+1+1+1+J)))

Rozwiązanie premiowe:

Część 1: Pyth, 192

%*$"%\143"$52(65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Wyjaśnienie:

$"%\143"$=> „% c”. $przełącza się do i ze stylu analizowania w Pythonie, aw analizowaniu ciągów w Pythonie \143jest ósemkową sekwencją zmiany znaczenia c. Ta odpowiedź jest zatem odpowiednikiem następującego kodu w stylu Python:

("%c" * 52) % (65, 66, 67, ...)

Oczywiście nie działa to w Pythonie, ponieważ drukowanie w Pythonie używa print, ale drukowanie w Pythonie jest niejawne, więc działa.


Rozwiązania Pyth nie używają żadnej z dodanych funkcji od momentu zadania pytania.

isaacg
źródło
Gdzie mogę się uczyć Pytha? Z przykładów?
Soham Chowdhury,
@SohamChowdhury Przykłady są dobrym miejscem do rozpoczęcia. Czytanie dokumentów to prawdopodobnie kolejny krok - doc.txt w katalogu głównym. Ostatnim krokiem jest rozpoczęcie gry z nim samemu, używając flagi -d (debugowania). Oprogramowanie jest bardzo nowe, więc nie ma nic lepszego. O ile mi wiadomo, tylko 3 osoby kiedykolwiek z niego korzystały, a ja jestem jedynym, który regularnie z niego korzystał. Powodzenia, miłej zabawy.
isaacg
23

Python (Symbole, 87 82)

from string import punctuation
from string import digits
print digits
print punctuation

Po prostu uwielbiam moduł ciągów Pythona ...

Edytować:

from string import punctuation as p
from string import digits as d
print d
print p

Wynik:

0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

FALSE (Letters, 21) DUP (Letters, 20):

FAŁSZ rozwiązanie:

65[$91\>][$,$32+,1+]#

DUP sollution (1 char krótszy)

65[$91<][$,$32+,1+]#

Wyjście (dla obu):

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

Tłumacz dla FAŁSZ.


Razem: 102

.ıʇǝɥʇuʎs
źródło
1
o, nieźle! Widziałem, jak ludzie mówią, że nie można tego zrobić w Pythonie, dobra robota.
hmatt1
from string import*działa równie dobrze i zmniejsza liczbę bajtów.
aglasser
5
@aglasser ... ale używanie *jest zabronione w tym kontekście ...
22ıʇǝɥʇuʎs
4
Masz rację, nie mogę uwierzyć, że zapomniałem * był symbolem haha. To wyjaśnia, dlaczego ty też tego nie zrobiłeś from string import punctuation, digits. Ładne rozwiązanie zgodne z zasadami. Przepraszam za mój błąd!
aglasser
13

GolfScript (14 znaków) + Deadfish x (116 znaków) = 130 znaków

91,65>{.32+}%+

i

xxcxxcdddKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKDxxxccxxxxxxxxxxKxKxKxKxKxKDxxxcxxcxxKxKxKxK
Peter Taylor
źródło
2
+1 za bycie pierwszym z czterech dotychczasowych postów faktycznie odpowiada na obie części.
Geobits
10

Części 1 i 2 w Ruby 2, 56 + 484 = 540

Część 1:

__=->_{(91..96)===_||$><<(''<<_);_>121||__[-~_]}
__[65]

Aby uzyskać więcej informacji na temat tego stylu Ruby, zobacz narfnme .

Część 2 (ten bit jest tylko dla Ruby 2.0+, działa doskonale z Ruby-2.1.0, ale może dawać ostrzeżenia we wcześniejszych wersjach):

class Fixnum
def c
String def a
end
end
def b
String def A
end
end
def x
String def z
end
end
def y
String def Z
end
end
def inspect
case chr
when c
when b
when y
p succ
else
print chr
p succ
end
p
rescue
p
end
end
def x
String def z
end
end
def y
String def Z
end
end
class String
def inspect
p size
p
end
end
p String p
class String
def inspect
p ord
p
end
end
p y
class Fixnum
def inspect
case chr
when x
p succ
else
send chr
print chr
p
end
p
rescue
print chr
p succ
p
end
end
p x

To było trudne. Wywoływanie wbudowanych metod Fixnum takich jak chri succwymaga otwarcia klasy Fixnum i ponownego zdefiniowania inspect, ponieważ mogę wywołać wywołanie za x.inspectpomocą p x. Muszę sprawdzić, aby wrócić, nilaby pwydrukować tylko nowy wiersz, każdy ciąg zostanie otoczony podwójnymi cudzysłowami. Ale jako efekt uboczny pętla. Mogę zakończyć pierwszą pętlę i drugą pętlę, używając porównania ciągów, aby zobaczyć, kiedy osiągnąłem zakres liter, ale ponieważ nie mogę napisać literału ciągu, muszę go uzyskać, wywołując String()zwrócony symbol (w Ruby 2) według defsłowa kluczowego. Ponieważ jest to składnia wieloliniowa i mogę porównywać ciągi tylko przezcase, który nie może przyjmować wyrażeń wielowierszowych, muszę zawrzeć literał w metodzie (ponieważ oczywiście nie mogę wykonać przypisania). Ostatnia pętla jest trudniejsza do zakończenia. Muszę to zatrzymać ~. Na szczęście spośród znaków ascii w tym zakresie ~jest to jedyny, który można wywołać na Fixnum bez argumentów bez zgłaszania błędu, dzięki czemu mogę send chrwykryć, kiedy jestem na końcu i przestać zapętlać.

Nie najlepszy wynik w tym wątku, ale jak dotąd jedyny, który używa tego samego języka dla obu części. Yay Ruby.

histocrat
źródło
1
+1 przed nawet drugą odpowiedzią, bo wiedziałem, że nadejdzie. Szacunek dla przesunięcia elastyczności Ruby do granic możliwości.
Vectorized
+1 za pierwszą / jedyną odpowiedź, która zapewnia oba programy w tym samym języku. Jak dotąd jest to wyraźny zwycięzca IMO. Nie zainstalowałem Ruby 2, ale ufam, że to działa.
Cyfrowa trauma
8

Część 2 w Applescript, 654

czekaj ... gdzie jest strona „ porady dotyczące gry w golfa w Applescript ”?

global a
global b
global c
global s
on f at n
set end of b to a
end
on g at n
f at a
f at a
end
on h at n
g at a
g at a
end
on i at n
h at a
h at a
end
on j at n
repeat with t in system info
f at a
end
end
on m at n
set end of b to a
set c to count of b
set end of s to ASCII character c
end
on n at n
m at a
m at a
m at a
end
on o at n
repeat with t in system info
m at a
end
end
set a to random number
set b to a as list
j at a
j at a
set c to count of b
set s to ASCII character c
set s to s as list
o at a
n at a
n at a
n at a
n at a
n at a
j at a
i at a
g at a
f at a
n at a
m at a
m at a
j at a
i at a
g at a
n at a
m at a
display dialog s as text

Wynik:

wprowadź opis zdjęcia tutaj

Cyfrowa trauma
źródło
1
Wiedziałem, że nastąpi rozwiązanie w języku jabłkowym. Tutaj masz +1.
Augıʇǝɥʇuʎs
4

CJam + alphabeta , 62 bajtów


Listy, CJam , 12 bajtów

"[{"{,-26>}/

Wypróbuj online!

Wynik

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Jak to działa

"[{"{     }/   For each of the characters "[" and "{",
     ,         push an array of all ASCII characters before it
      -26>     and discard all but the last 26 characters.

Symbole, AlphaBeta , 50 bajtów

ZaaAccctFUaCLOrEbbCLbCLbCLbCLdddACLbCLbCLgDLgDLgDL

Wypróbuj online!

Oficjalny interpreter C ++ zawiera błąd, który uniemożliwia tworzenie pętli i nie mogę wymyślić, jak korzystać z interpretera Lua. Naprawiłem ten błąd. Możesz sprawdzić, czy działa zgodnie z przeznaczeniem, uruchamiając przykładowe programy ze strony EsoLang.

Wynik

!"#$%&'()*+,-./0123456789:;<=>?@~}|{]\[^_`

Jak to działa

Z      Switch register 4 to the position register.
aa     Set registers 1 to 2.
A      Copy the value from register 1 to register 2.
ccc    Add 30 to register 1 (result: 31).
tF     Set register 2 to the product of registers 1 and 2 (result: 64).
U      Add 10 to the position register (result: 10, i.e., the position of the next byte).
aCL    Add 1 to register 1 and print the corresponding ASCII character.
O      If register 1 != register 2, go to the position in the position register.
rEb    Set register 1 to the sum of registers 1 and 2 minus 1 (result: 127).
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
ddd    Subtract 30 from register 1 (result: 93).
A      Copy the value from register 1 to register 2.
CL     Print the ASCII character corresponding to register 1.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.
Dennis
źródło
3

Część 1 w BrainFuck: 80 74 bajtów

>-[+>+<[+<]>]>+.<<+++++[>+++++[>+.<-]<-]>>+++++++.<<+++++[>+++++[>+.<-]<-]
spocot
źródło
Być może straciłeś pierwszy z >powodu braku wcięcia kodu. Jest to więc cytat.
Falko
@ Falko Dzięki za zauważenie, że mi tego brakowało.
spocot
3

Łącznie 318 bajtów

Naprawdę miałem nadzieję znaleźć odpowiedź na oba programy w tym samym języku, ale jak dotąd nic. Oto to zamiast tego:

Część 1: Pure Bash, 129 bajtów

_0=`$ 2>&1`
_0=${_0##*:}
_1=${_0:5:1}
_5=${_0:1:1}$_1${_0:11:1}
. <($_5<<<_2=\({${_1^}..$_1}\))
_3=${_2[@]:0:26}
$_5<<<$_3${_3,,}

Wynik:

$ ./letsym.sh
A B C D E F G H I J K L M N O P Q R S T U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y z
$ 

Część 2: GNU dc, 189 bajtów

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzBDPBEdPBFPdkvZP

Wynik:

$ dc symlet.dc
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~$ 
Cyfrowa trauma
źródło
2

Wiesz, ktoś powinien to zrobić.

Część 1 w BrainFuck: 174 bajty

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.
Yasen
źródło
1

Część 1: Rubin, 45 bajtów

_=[*?@...?[,*?`...?{]
_[0],_[27]=*$_
$><<_*''

Wyjaśnienie

  • Zakres zawierający az ( ?@...?[) i Zakres zawierający AZ ( ?`...?{) stają się elementami tablicy _za pomocą operatora splat (* ).
  • 0 element ( "@") i 27 element ( "`") tablicy _są ustawione na nil.
  • Tablica _jest łączona za pomocą Array#*i drukowana do stdout ( $>)
Britishtea
źródło
W *$_drugim wierszu możesz zastąpić p(lub []).
Jordan