J, 126 124 121 119 116 115 113 113 105 116 115 112 वर्ण
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
कीबोर्ड से इनपुट लेता है। उदाहरण:
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
6302715408
|\==============================================================/|
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|| || (__) (__) (__) || (__) || (__) (__) || ||
|| || || || || || || || || || || ||
|| (__) || || || (__) || (__) || || (__) ||
|<==============================================================>|
|| (__) (__) || (__) (__) (__) || (__) || (__) ||
|| || (__) || (__) (__) || || (__) || (__) ||
|| || (__) || || || || || (__) || (__) ||
|| || || || || || || || (__) || || ||
|| || || || || || || || || || || ||
|| || || (__) || || || (__) || (__) || ||
|| (__) || (__) || || (__) (__) || (__) || ||
|| (__) || (__) (__) (__) (__) (__) || (__) || ||
|| (__) (__) (__) (__) (__) (__) (__) || (__) (__) ||
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|/==============================================================\|
यहाँ मुख्य चाल जे के मुक्केबाजी का दुरुपयोग है जो इसके पात्रों का उपयोग करता है। यह ऐसा करने के लिए एक वैश्विक पैरामीटर - 9!:7
- का उपयोग करता है । आगे गोल्फिंग के लिए जगह हो सकती है, लेकिन ईमानदार होने के लिए मुझे कुछ काम करने की खुशी थी जो इस सवाल पर मेरे आखिरी प्रयास की भरपाई करनी चाहिए ।
एक ट्वीट में लिखा गया है कि 'गज़ ने इसे' बना दिया है।
संपादित करें: बचत के 3 वर्ण जेसी मिलिकन के उत्तर 2 6$' || (__)'
से उधार लेने के कारण हैं ।
आगे संपादित करें: मेरे द्वारा देखे गए 11 वर्णों को अतिरिक्त रिक्त स्थान नहीं मिला, जो कि मेरे पास नहीं थे।
स्पष्टीकरण:
कोड तीन मुख्य वर्गों में है:
1) सेटअप
[(s=:[,.~,.)9!:7'\=/<=>/=\|='
यह स्वयं दो भागों में है।
9!:7'\=/<=>/=\|='
उन वर्णों को फिर से परिभाषित करता है जिनका उपयोग J बक्से को प्रदर्शित करने के लिए करेगा। जे की मुक्केबाजी आम तौर पर इस तरह दिखती है:
2 2$<"0[1 2 3 4
┌─┬─┐
│1│2│
├─┼─┤
│3│4│
└─┴─┘
लेकिन फिर से परिभाषित करने के बाद यह इस तरह दिखता है:
2 2$<"0[1 2 3 4
\===/
|1|2|
<===>
|3|4|
/===\
(s=:[,.~,.)
एक क्रिया को परिभाषित करता हूं जो मैं बाद में एक दो बार उपयोग करने जा रहा हूं। यह घोषित करने के लिए सबसे अच्छी जगह है। यह बाईं ओर एक चरित्र और दाईं ओर वर्णों की एक सरणी लेता है और चरित्र के बीच की सरणी को सैंडविच करता है। उदाहरण के लिए:
3 5$'abcdefghijklmno'
abcde
fghij
klmno
'-' s 3 5$'abcdefghijklmno'
-abcde-
-fghij-
-klmno-
अंतिम [
केवल अगले भाग से सेटअप को अलग करने के लिए कार्य करता है।
2) इनपुट और प्रतिनिधित्व
,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
".,.1!:1[1
कीबोर्ड से इनपुट लेता है और इसे अलग-अलग अंकों में अलग करता है:
".,.1!:1[1
314159
3 1 4 1 5 9
((i.5)</5|])
एक शून्य बनाता है और अबेकस के निचले हिस्से का प्रतिनिधित्व करता है:
((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)
शून्य के शीर्ष भाग का एक शून्य और एक प्रतिनिधित्व बनाता है:
|:@(1,.<&5) 3 1 4 1 5 9
1 1 1 1 1 1
1 1 1 1 0 0
इन दो भागों को एक साथ उपयोग करके बॉक्सिंग किया जाता है ;
:
(|:@(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|
/=======================\
तब पेटियों को एब्सस के आधार बनाने के लिए एक के ऊपर एक रखा जाता है, जिससे:
,.(|:@(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) आउटपुट
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>
&.>
इसका मतलब है कि बारी-बारी से दोनों बॉक्सों पर काम किया जाएगा।
(,-.)
यह एक हुक है जो इनपुट को नकार देगा और फिर इसे मूल के अंत में जोड़ देगा:
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
यह वास्तव में प्रतिनिधित्व का हिस्सा है, लेकिन गोल्फिंग उद्देश्यों के लिए इसे इस खंड में रखना बेहतर है। पिछले इनपुट पर लागू:
(,-.)&.>,.(|:@(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[\' || (__)'){~
शून्य और लोगों को अब एक मनका या अनुपस्थिति का प्रतिनिधित्व करने के लिए एक स्ट्रिंग का चयन करने के लिए उपयोग किया जाता है:
([:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\====================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<====================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/====================================\
लेकिन अब, जैसा कि हावर्ड ने मुझे बताया, मोतियों के दोनों तरफ एक जगह कम है। इसलिए हम s
रिक्त स्थान के दो स्तंभों के बीच प्रत्येक बॉक्स की सामग्री को सैंडविच करने के लिए पूर्वनिर्धारित क्रिया का उपयोग करते हैं:
(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\======================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<======================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/======================================\
ऐसा करने के बाद, जो कुछ बचा है उसे एक स्ट्रिंग में परिवर्तित करना है ":
ताकि हम इसे दो कॉलमों के बीच सैंडविच कर सकें |
:
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
|\======================================/|
|| (__) (__) (__) (__) (__) (__) ||
|| (__) (__) (__) (__) || || ||
|| || || || || || || ||
|| || || || || (__) (__) ||
|<======================================>|
|| (__) (__) (__) (__) || (__) ||
|| (__) || (__) || || (__) ||
|| (__) || (__) || || (__) ||
|| || || (__) || || (__) ||
|| || || || || || || ||
|| || || || || (__) || ||
|| || (__) || (__) (__) || ||
|| || (__) || (__) (__) || ||
|| (__) (__) || (__) (__) || ||
|| (__) (__) (__) (__) (__) (__) ||
|/======================================\|