J, 126 124 121 119 116 115 113 105 116 115 112 karakterleri
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
Klavyeden girdi alır. Örnek:
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
6302715408
|\==============================================================/|
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|| || (__) (__) (__) || (__) || (__) (__) || ||
|| || || || || || || || || || || ||
|| (__) || || || (__) || (__) || || (__) ||
|<==============================================================>|
|| (__) (__) || (__) (__) (__) || (__) || (__) ||
|| || (__) || (__) (__) || || (__) || (__) ||
|| || (__) || || || || || (__) || (__) ||
|| || || || || || || || (__) || || ||
|| || || || || || || || || || || ||
|| || || (__) || || || (__) || (__) || ||
|| (__) || (__) || || (__) (__) || (__) || ||
|| (__) || (__) (__) (__) (__) (__) || (__) || ||
|| (__) (__) (__) (__) (__) (__) (__) || (__) (__) ||
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|/==============================================================\|
Buradaki ana numara, J'nin boks karakterini kullandığı karakterleri yeniden tanımlayarak kötüye kullanılmasıdır. Bu bir kullanan küresel parametreyi - 9!:7
- Bunu yapmak için. Daha fazla golf oynamak için yer olabilir, ancak dürüst olmak gerekirse , bu sorudaki son girişimi telafi edecek bir iş bulmaya memnun oldum .
'Gaz yaptı' diyecek kadar karakter bırakılmış bir tweet'e uyuyor :-).
Düzenleme: tasarrufların 3 karakter ödünç kaynaklanmaktadır 2 6$' || (__)'
gelen Jesse Millikan'ın cevap.
Diğer düzenleme: Fark etmemiş olduğum her iki tarafa da fazladan boşluk ekleyerek 11 karakter kaybettim.
Açıklama:
Kod üç ana bölümden oluşmaktadır:
1) Kurulum
[(s=:[,.~,.)9!:7'\=/<=>/=\|='
Bu iki bölümden oluşuyor.
9!:7'\=/<=>/=\|='
J'nin kutuları görüntülemek için kullanacağı karakterleri yeniden tanımlar. J'nin boksu normalde şöyle görünür:
2 2$<"0[1 2 3 4
┌─┬─┐
│1│2│
├─┼─┤
│3│4│
└─┴─┘
ancak yeniden tanımladıktan sonra şöyle görünür:
2 2$<"0[1 2 3 4
\===/
|1|2|
<===>
|3|4|
/===\
(s=:[,.~,.)
Bir fiili tanımlar birkaç kez sonra kullanacağım. Bu, onu ilan etmek için en iyi yer olduğu ortaya çıkıyor. Solda bir karakter alır ve sağda bir karakter dizisi alır ve diziyi karakter arasında sandviçler. Örneğin:
3 5$'abcdefghijklmno'
abcde
fghij
klmno
'-' s 3 5$'abcdefghijklmno'
-abcde-
-fghij-
-klmno-
Final [
, kurulumu bir sonraki bölümden ayırmaya yarar.
2) Girdi ve Temsil
,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
".,.1!:1[1
girişi klavyeden alır ve ayrı basamaklara ayırır:
".,.1!:1[1
314159
3 1 4 1 5 9
((i.5)</5|])
abaküsün alt kısmının sıfırlarını ve bir temsilini yaratır:
((i.5)</5|]) 3 1 4 1 5 9
1 1 1 1 0 1
1 0 1 0 0 1
1 0 1 0 0 1
0 0 1 0 0 1
0 0 0 0 0 0
|:@(1,.<&5)
bir sıfırlar ve abaküsün üst kısmının temsilini oluşturur:
|:@(1,.<&5) 3 1 4 1 5 9
1 1 1 1 1 1
1 1 1 1 0 0
Bu iki bölüm aşağıdakiler kullanılarak birlikte kutulanmıştır ;
:
(|:@(1,.<&5);((i.5)</5|])) 3 1 4 1 5 9
\=======================/
|1 1 1 1 1 1|1 1 1 1 0 1|
|1 1 1 1 0 0|1 0 1 0 0 1|
| |1 0 1 0 0 1|
| |0 0 1 0 0 1|
| |0 0 0 0 0 0|
/=======================\
Daha sonra, kutular, abaküsün temelini oluşturmak üzere birbiri üzerine yerleştirilir:
,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
/===========\
3) Çıktı
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>
&.>
sırayla her iki kutuda da aşağıdakilerin çalışacağı anlamına gelir.
(,-.)
bu, girişi olumsuz etkileyecek ve orijinalin sonuna ekleyecek bir kancadır:
2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
(,-.) 2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
0 1 0 1 0
0 1 0 1 0
Bu gerçekten temsilin bir parçası, ancak golf amacıyla bu bölümde olması daha iyi. Önceki girişe uygulanır:
(,-.)&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
|0 0 0 0 0 0|
|0 0 0 0 1 1|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
|0 0 0 0 1 0|
|0 1 0 1 1 0|
|0 1 0 1 1 0|
|1 1 0 1 1 0|
|1 1 1 1 1 1|
/===========\
[:,.(_6[\' || (__)'){~
Sıfırlar ve olanlar şimdi bir boncuk veya yokluğunu temsil eden bir dize seçmek için kullanılır:
([:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\====================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<====================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/====================================\
Ama şimdi, Howard'ın bana işaret ettiği gibi, boncukların her iki tarafında da kısa bir boşluk var. Bu nedenle, önceden tanımlanmış s
fiili, her bir kutunun içeriğini iki boşluk sütunu arasında sandviçlemek için kullanırız :
(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\======================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<======================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/======================================\
Bunu yaptıktan sonra, geriye kalan tek şey ":
bunu iki dize arasında sandviç yapabilmemiz için kullanarak bir dizgeye dönüştürmektir |
:
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
|\======================================/|
|| (__) (__) (__) (__) (__) (__) ||
|| (__) (__) (__) (__) || || ||
|| || || || || || || ||
|| || || || || (__) (__) ||
|<======================================>|
|| (__) (__) (__) (__) || (__) ||
|| (__) || (__) || || (__) ||
|| (__) || (__) || || (__) ||
|| || || (__) || || (__) ||
|| || || || || || || ||
|| || || || || (__) || ||
|| || (__) || (__) (__) || ||
|| || (__) || (__) (__) || ||
|| (__) (__) || (__) (__) || ||
|| (__) (__) (__) (__) (__) (__) ||
|/======================================\|