Arka fon
Python 3'ün birçok string string değişkeni var. Örneğin, dize this 'is' an exa\\m/pleşu şekilde temsil edilebilir:
'this \'is\' an exa\\\\m/ple'
"this 'is' an exa\\\\m/ple"
r"this 'is' an exa\\m/ple"
'''this 'is' an exa\\\\m/ple'''
"""this 'is' an exa\\\\m/ple"""
r'''this 'is' an exa\\m/ple'''
r"""this 'is' an exa\\m/ple"""
Gördüğünüz gibi, dizgiler için farklı sınırlayıcılar kullanmak, belirli karakterler için gereken kaçış değerini değiştirerek dizeleri uzatabilir veya kısaltabilir. Bazı sınırlayıcılar tüm karakter dizileri için kullanılamaz: r'yukarıda eksik (açıklama için daha sonra bakınız). Dizelerinizi bilmek, kod golfünde çok faydalıdır.
Ayrıca, birden çok dize değişmezi bire birleştirebilir:
'this \'is\' an ''''exa\\\\m/ple'''
"this 'is' an "r'exa\\m/ple'
Meydan okuma
Mücadeleye, yazdırılabilir bir ASCII dizgisi verildiğinde , Python'daki en kısa değişmez gösterimini göstermesi gerekiyor.
Tel mekaniği ile ilgili detaylar
Dizeleri kullanılarak ayrılmış olabilir ', ", '''ve """. Başlangıç sınırlayıcısına tekrar basılmadan basıldığında bir dize biter.
Bir dize değişmez ile başlar '''veya """sınırlayıcı olarak tüketilir. Aksi takdirde 'veya "kullanılır.
Karakterler \önlerinden bir tane koyarak kaçabilir . Bu, karaktere karakter ekler ve sahip olabileceği herhangi bir özel anlamı ortadan kaldırır. Örneğin 'a \' b', ortada 'kaçar ve dolayısıyla değişmez biter ve sonuçta ortaya çıkan dize a ' b.
İsteğe bağlı olarak, başlangıç sınırlayıcısından önce rveya bunlardan biri Ryerleştirilebilir. Bu yapılırsa, kaçış \sonuçta görünecektir. Örneğin, r'a \' b'değerlendirir a \' b. Bu yüzden a ' bsınırlandırılamaz r'.
Kaçmak için '''ya """bir tek karakterlerden biri kaçmak gerekiyor.
Bu değişmezler, içeriğini birleştiren birlikte birleştirilebilir.
kurallar
- Giriş golf için dizedir. Yalnızca yazdırılabilir ASCII, bu nedenle yeni satırlar veya diğer özel karakterler yoktur.
- Çıktı golfed string değişmezdir. Birden fazla çözüm varsa, bir tane çıktı.
- Meseleyi basitleştirmek için,
riplerde olmayanlar hariç\\, herhangi bir kaçış\'ve\"geçersiz sayılır. Python'a'\m'eşit olsalar bile çıktıda kullanılmamalıdırlar'\\m'. Bu gibi özel kaçış kodlarını işleme gereksinimini ortadan kaldırır\n. - Python dizelerinin golf oynamaları için izin verilmez. Python'a
reprizin verilir, çünkü zaten berbattır. - Standart kod-golf kuralları geçerlidir.
Örnek girişler / çıkışlar
Bunları doğrulamak için elimden geleni yaptım, ancak hatalar varsa bana bildirin. Durumlarda birden fazla geçerli çıktı varsa, tümü girişin altında listelenir.
test
-> 'test'
-> "test"
te\st
-> 'te\\st'
-> "te\\st"
-> r'te\st'
-> r"te\st"
te'st
-> "te'st"
te"st
-> 'te"st'
t"e"s't
-> 't"e"s\'t'
te\'st
-> "te\\'st"
-> r'te\'st'
-> r"te\'st"
te\'\"st
-> r'te\'\"st'
-> r"te\'\"st"
t"'e"'s"'t"'s"'t"'r"'i"'n"'g
-> """t"'e"'s"'t"'s"'t"'r"'i"'n"'g"""
-> '''t"'e"'s"'t"'s"'t"'r"'i"'n"'g'''
t"\e"\s"\t"\s'\t"\r"\i"\n"\g
-> r"""t"\e"\s"\t"\s'\t"\r"\i"\n"\g"""
-> r'''t"\e"\s"\t"\s'\t"\r"\i"\n"\g'''
t"""e"""s"""'''t'''s'''"""t"""r"""'''i'''n'''g
-> 't"""e"""s"""'"'''t'''s'''"'"""t"""r"""'"'''i'''n'''g"
t\"""e\"""s\"""'''t'''s'''\"""t\"""r\"""'''i'''n'''g
-> r"""t\"""e\"""s\"""'''t'''s'''\"""t\"""r\"""'''i'''n'''g"""
t"e"s"t"s"t"r"i"n"g"\'\'\'\'\'\'\'\
-> r't"e"s"t"s"t"r"i"n"g"\'\'\'\'\'\'\'''\\'
-> r't"e"s"t"s"t"r"i"n"g"\'\'\'\'\'\'\''"\\"
"""t"'e"'s"'t"'s"'t"'r"'i"'n"'g'''
-> """\"""t"'e"'s"'t"'s"'t"'r"'i"'n"'g'''"""
-> '''"""t"'e"'s"'t"'s"'t"'r"'i"'n"'g''\''''
Bu ek durumlar için Anders Kaseorg'a teşekkürler :
\\'"\\'\
-> "\\\\'\"\\\\'\\"
''"""''"""''
-> '''''"""''"""'\''''
u've b'?
bnormal dizelerle bile birleştirilemezler, bu yüzden onları dışarıda bıraktım.
"da'->"""t"'e"'s"'t"'s"'t"'r"'i"'n"'g'''