Semboller ve Harfler


17

Semboller ve Harfler

ASCII karakterleri bir kez bölünmüş olan yine ! Kişisel kümelerdir Mektuplar ve Sembolleri .

Harfler

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Semboller

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

Görev iki program yazmaktır:

  1. Her yazdır Mektupları Programda bunlardan herhangi kullanmadan tam olarak bir kez.

  2. Sembollerin her birini , programınızda herhangi birini kullanmadan tam olarak bir kez yazdırın .

kurallar

  • Programınızda veya çıktıda boşluk görünebilir.
  • ASCII olmayan karakterlere izin verilmez.
  • Çıktı standart çıktıya veya dosyanın içeriği veya adı olarak bir dosyaya gider.
  • Giriş yok.
  • Çıktı yalnızca bir kümeden veya diğerinden ASCII karakter içermelidir.
  • Programlar tek bir istisna dışında farklı dillerde veya aynı dilde yazılabilir:
  • Boşluk dili sadece programlardan biri için kullanılabilir.
  • Standart boşluklar geçerlidir.

puanlama

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

En düşük puan kazanır!

Not:

Daha fazla gönderimi teşvik etmek için, yine de programlardan yalnızca biri için bir çözüm içeren bir yanıt gönderebilirsiniz. Kazanamayacaksınız, ama yine de harika bir şey gösterebileceksiniz.

Calvin'in Hobileri'ne , önceki sorusuyla fikri ilham verdiği için teşekkür ederiz .


4
Çoğu dilde bu mümkün değil ... Örneğin Haskell = kaçınılmaz
haskeller

1
@proudhaskeller zorluğun bir kısmı mümkün olan yerlerde bir dil seçiyor.
hmatt1

(Bunu sandbox içindeyken düşünmeliydim, ama) "çıktıda boşluk görünebilir" kuralı göz önüne alındığında, bu (harfler | semboller) sırasının önemli olmadığı anlamına mı geliyor?
FireFly

@FireFly herhangi bir sipariş iyi.
hmatt1

Programınızda kontrol karakterleri (0 - 31 ve 127 arası kod karakterleri) olmasına izin veriliyor mu?
FUZxxl

Yanıtlar:


7

Toplam: 53 karakter

Tek bir dilde toplam: 230 karakter, Pyth

Bölüm 1: Golfscript, 15

91,65>123,97>++

Çıktılar:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Açıklama:

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.

Bölüm 2: Pyth , 38

JhCeGLjkmCdbsrCdCPhGsrhCPeGChGsrJhhhhJ

Çıktılar:

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

Açıklama:

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

Bonus çözümü:

Bölüm 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

Açıklama:

$"%\143"$=> "% c". $Python ayrıştırma stiline geçiş yapar ve Python string ayrıştırma \143işleminde sekizli kaçış dizisidir c. Dolayısıyla bu cevap aşağıdaki Python tarzı koda eşdeğerdir:

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

Tabii ki, bu Python'da işe yaramaz, çünkü Python'da yazdırma kullanır print, ancak Pyth'te yazdırma örtüktür, bu yüzden çalışır.


Pyth çözümleri, soru sorulduğundan beri eklenen özelliklerin hiçbirini kullanmaz.


Pyth'i nereden öğrenirim? Örneklerden mi?
Soham Chowdhury

@SohamChowdhury Örnekler başlamak için iyi bir yerdir. Dokümanları okumak muhtemelen bir sonraki adımdır - birincil dizindeki doc.txt. Son adım, -d (hata ayıklama) bayrağını kullanarak kendinizle oynamaya başlamaktır. Yazılım çok yeni ve bu yüzden daha iyi bir şey yok. Bildiğim kadarıyla, sadece 3 kişi bunu kullandı ve düzenli olarak kullanan tek kişi benim. İyi şanslar, tadını çıkarın.
isaacg

23

Python (Semboller, 87 82)

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

Sadece Python'un string modülünü seviyorum ...

Düzenle:

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

Çıktı:

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

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

FALSE çözümü:

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

DUP sollution (1 karakter daha kısa)

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

Çıktı (her ikisi için):

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

YANLIŞ için tercüman.


Toplam: 102


1
vay güzel! İnsanların bunun python'da yapılamayacağını söylediğini gördüm, aferin.
hmatt1

from string import*eşit derecede iyi çalışır ve bayt sayısını azaltır.
aglasser

5
@aglasser ... ama *bu bağlamda kullanmak yasaktır ...
22ıʇǝɥʇuʎs

4
Haklısın, unuttuğuma inanamıyorum * bir semboldür haha. Bu da neden yapmadığınızı açıklıyor from string import punctuation, digits. Kurallara uyan güzel bir çözüm. Benim hatam için üzgünüm!
aglasser

13

GolfScript (14 karakter) + Deadfish x (116 karakter) = 130 karakter

91,65>{.32+}%+

ve

xxcxxcdddKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKDxxxccxxxxxxxxxxKxKxKxKxKxKDxxxcxxcxxKxKxKxK

2
Şimdiye kadar her iki bölüme de cevap veren +1 mesajdan ilki olan +1.
Geobits

10

Ruby 2, 56 + 484 = 540'ta Bölüm 1 ve 2

Bölüm 1:

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

Ruby'nin bu stili hakkında daha fazla bilgi için narfnme'ye bakın .

Bölüm 2 (bu bit yalnızca Ruby 2.0+, ruby-2.1.0 ile mükemmel çalışır, ancak önceki sürümlerde uyarı verebilir):

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

Bu zor oldu. Gibi Fixnum yöntemlerle dahili arama Açıklama chrve succFixnum sınıfını açılması ve yeniden tanımlıyor gerektirir inspectben bir çağrı tetikleyebilir beri x.inspectbirlikte p x. Ben dönmek için incelemek gerek nilböylece psadece yeni satır yazdırır, herhangi bir dize çift tırnak çerçeveli edilecektir. Ancak bir yan etki olarak, döngüler. Bir harf aralığına ulaştığımda görmek için bir dize karşılaştırması kullanarak ilk döngü ve ikinci döngüleri sonlandırabilirim, ancak bir dize hazır bilgisi yazamadığım için String()döndürülen sembolü çağırarak bir tane almalıyım (Ruby 2'de) tarafından defanahtar sözcük. Bu çok satırlı bir sözdizimi olduğundan ve yalnızca dize karşılaştırması yapabilirimcase, çok satırlı ifadeler alamaz, değişmez bir yöntemle sarmak gerekir (çünkü açıkça atama yapamıyorum). Son döngünün sonlandırılması daha zordur. Durmak için ihtiyacım var ~. Neyse ki, bu aralıktaki ascii karakterlerinden ~biri, bir Fixnum'da hata oluşturmadan argüman olmadan çağrılabilen tek karakterdir, bu yüzden send chrsonunda olduğumu tespit etmek ve döngüyü durdurmak için kullanabilirim.

Bu konudaki en iyi skor değil, şimdiye kadar her iki parça için aynı dili kullanan tek puan. Yay Ruby.


1
2. cevabınızdan önce bile + 1'ledim, çünkü geleceğini biliyordu. Ruby'nin esnekliğini sınırlara itmeye saygı duyun.
Vectörize

Her iki programı da aynı dilde sağlayan ilk / tek cevap için +1. Şimdiye kadar bu açık kazanan IMO. Ruby 2'yi henüz yüklemedim, ancak bunun işe yaradığına güveniyorum.
Dijital Travma

8

Applescript Bölüm 2, 654

bekleyin ... " Applescript'te golf oynamak için ipuçları " sayfası nerede?

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

Çıktı:

resim açıklamasını buraya girin


1
Bir Apple çözümlemesi olacağını biliyordum. Burada + 1'iniz var.
ɐɔıʇǝɥʇuʎs

4

CJam + Alphabeta , 62 bayt


Mektuplar, CJam , 12 bayt

"[{"{,-26>}/

Çevrimiçi deneyin!

Çıktı

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Nasıl çalışır

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

Semboller, AlphaBeta , 50 bayt

ZaaAccctFUaCLOrEbbCLbCLbCLbCLdddACLbCLbCLgDLgDLgDL

Çevrimiçi deneyin!

Resmi C ++ tercümanında döngüler imkansız hale getiren bir hata var ve Lua yorumlayıcısının nasıl kullanılacağını anlayamıyorum. Bu hatayı düzelttim. EsoLang sayfasından örnek programları çalıştırarak amaçlandığı şekilde çalıştığını doğrulayabilirsiniz.

Çıktı

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

Nasıl çalışır

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.

3

BrainFuck Bölüm 1: 80 74 bayt

>-[+>+<[+<]>]>+.<<+++++[>+++++[>+.<-]<-]>>+++++++.<<+++++[>+++++[>+.<-]<-]

>Eksik kod girintisi nedeniyle ilkini kaybetmiş olabilirsiniz . Yani bir teklif olarak işlendi.
Falko

@Falko Fark ettiğiniz için teşekkürler, bunu kaçırdım.
spocot

3

Toplam 318 bayt

Her iki programda da aynı dilde bir cevap bulmayı umuyordum, ama şimdiye kadar hiçbir şey. İşte bunun yerine:

Bölüm 1: Saf bash, 129 bayt

_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,,}

Çıktı:

$ ./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
$ 

Bölüm 2: GNU dc, 189 bayt

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzBDPBEdPBFPdkvZP

Çıktı:

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

2

Biliyor musun, birisi bunu devam ettirmeli.

BrainFuck Bölüm 1: 174 bayt

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.

1

Bölüm 1: Yakut, 45 bayt

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

açıklama

  • Az ( ?@...?[) içeren bir Aralık ve AZ ( ?`...?{) içeren bir Aralık _, uyarıcı işlecini ( *) kullanarak dizinin öğeleri haline gelir .
  • Dizinin 0. elemanı ( "@") ve 27. elemanı ( "`") _olarak ayarlanır nil.
  • Dizi stdout ( ) _kullanılarak birleştirilir Array#*ve yazdırılır$>

Sen yerini alabilir *$_ikinci satırda p(veya []).
Ürdün
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.