रेखा खींचने वाले पात्रों का उपयोग करके एक सुडोकू बोर्ड बनाएं


20

यह कोड गोल्फ है। इस चुनौती के लिए, मैं एक विधि (आपको एक पूर्ण कार्यक्रम की आवश्यकता नहीं है) स्वीकार करूंगा, लेकिन विधि हस्ताक्षर बाइट की गिनती की ओर इशारा करता है और मैं पूर्ण हस्ताक्षर (एक लाम्दा नहीं) देखना चाहता हूं। विधि के लिए इनपुट 81 तत्वों के साथ एक पूर्णांक सरणी है। विधि से आउटपुट / रिटर्न वैल्यू एक स्ट्रिंग है जो एसेसी सुडोकू बोर्ड के रूप में सरणी का प्रतिनिधित्व करता है।

यदि आप एक गूढ़ भाषा या ऐसी किसी चीज़ का उपयोग कर रहे हैं, जिसमें बिलकुल विधियाँ नहीं हैं, तो आप इसे अनुकूलित कर सकते हैं, लेकिन यदि भाषा इस बात का समर्थन करती है कि मैं कुछ देखना चाहता हूँ, तो वास्तव में "वास्तविक" असंगठित प्रोग्राम में प्लग किया जा सकता है, भले ही विधि शरीर अपने आप में एक दर्द है जिसके साथ काम करना है। आवश्यकता जेली या 05AB1E जैसी भाषाओं को अवरुद्ध करने के लिए नहीं है, लेकिन जावा जैसी भाषाओं के लिए कुछ मंच बनाने के लिए आसान बनाने के लिए जो उस मंच के लिए समझ में आता है।

इनपुट के लिए, पूर्णांक मान 1-9 के स्पष्ट अर्थ होने चाहिए। ए 0 को हमेशा एक कोठरी के रूप में व्याख्यायित किया जाना चाहिए। आप एक खाली सेल के रूप में 1-9 रेंज के बाहर कुछ और भी व्याख्या कर सकते हैं, लेकिन इसकी आवश्यकता नहीं है। एरे से पोजिशनिंग पोजिशन में ऊपर बाईं ओर शुरू होता है और अगली पंक्ति में जाने से पहले प्रत्येक पंक्ति को बाएं से दाएं तक भरता है।

बक्से के लिए, मुझे बाहर की चारों ओर और प्रत्येक 3x3 क्षेत्र के बीच, और अन्य कोशिकाओं के बीच एकल लाइनें चाहिए। इन्हें रेखा खींचने वाले पात्रों के साथ खींचा जाना चाहिए (यदि आपका I / O प्रारूप वर्णों के अनुक्रम के बजाय बाइट्स के अनुक्रम के रूप में तारों का प्रतिनिधित्व करता है, तो आपको उन्हें एक प्रसिद्ध एन्कोडिंग जैसे UTF-8 या कोडपेज 347 में प्रतिनिधित्व करना चाहिए)।

इस चुनौती के लिए, मैं आपको सुडोकू पहेली उत्पन्न करने के लिए नहीं कह रहा हूं । यह फ़ंक्शन के लिए इनपुट है। मैं आपसे पहेली हल करने के लिए नहीं कह रहा हूं । मैं आपको एक स्ट्रिंग बनाने के लिए कह रहा हूं जो आपको दी गई है "ड्रा" के रूप में (संभव के रूप में कुछ बाइट्स में)।

उदाहरण इनपुट:

सरणी के लिए मान:

{ 8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, 0, 0, 9, 0, 0 ,0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 7, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 4, 0}

मान आपकी भाषा के लिए जो भी तंत्र स्वाभाविक है उसका उपयोग कर सकते हैं: int [], ArrayList, अनुक्रम, tuple, अंकों की स्ट्रिंग, जो भी हो, जब तक आपके पास प्रत्येक सेल के इनपुट में मान हो (केवल पॉपुलेटेड कोशिकाओं के पदों के लिए कोई मानचित्र नहीं) )। याद रखें कि इनपुट की आपूर्ति की जाती है ... यह आपकी बाइट गिनती का हिस्सा नहीं है। लेकिन इनपुट किसी भी सुडोकू पहेली का प्रतिनिधित्व कर सकता है , और पहेली में एक वैध समाधान भी नहीं हो सकता है । आप ग्रहण करने के लिए है कि पहेली मिलता है है प्रिंट करने योग्य। उदाहरण के लिए, आपको 82 तत्वों के साथ कुछ नहीं मिलेगा।

आप एक उचित निश्चित-चौड़ाई वाले फ़ॉन्ट को भी ग्रहण करते हैं।

संगत आउटपुट:

╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗
│ 8 ║ 5 │ ║ ║ ║ 2 │ 4 │ │ │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║ 7 ║ 2 │ │ │ │ │ ║ ║ 9 │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
│ │ │ 4 ║ │ │ │ │ │ │
╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣
│ │ ║ │ 1 ║ ║ 7 │ │ ║ 2 │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║ 3 ║ │ 5 │ ║ │ │ 9 │ │ │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
│ │ 4 │ │ │ │ │ │ │ │
╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣
│ │ ║ ║ │ ║ │ │ │ │ │ │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
│ │ 1 ║ 7 │ │ │ │ │ │ │
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
│ │ ║ ║ │ 3 ║ 6 │ │ 4 │ │
╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝

4
क्या आप विधि भाग के बारे में निश्चित हैं? यह बहुत सी भाषाओं के लिए कोई मतलब नहीं है (अर्थात, विधियों के बिना भाषाएँ)।
साइओस

1
उन भाषाओं के लिए जिनमें विधियाँ नहीं हैं, आप अनुकूलित कर सकते हैं। लेकिन अगर वे करते हैं, तो मैं एक ऐसी चीज की तलाश कर रहा हूं जो वास्तव में "वास्तविक" प्रोग्राम में प्लग करने के लिए उपयोगी हो। मैं उसको जोड़ दूंगा।
जोएल कोएहॉर्न

2
लंबोदर को अनुमति नहीं देने का क्या कारण है? उन लोगों को निश्चित रूप से एक "वास्तविक" कार्यक्रम के रूप में अच्छी तरह से नामित कार्यों / विधियों में प्लग किया जा सकता है
जूलियन वुल्फ

2
Nitpicky लेकिन महत्वपूर्ण: "ASCII बॉक्स ड्रॉइंग कैरेक्टर" जैसी कोई चीज नहीं है। ASCII 127 के माध्यम से कोड 0 को कवर करता है, जिनमें से कोई भी बॉक्स ड्राइंग वर्ण नहीं है। हाल के समय में, यूनिकोड मानक है, लेकिन इसमें कई अलग-अलग एनकोडिंग हैं: UTF-8, UTF-16 आदि, जिनमें से सभी 1 बाइट प्रति बॉक्सट्रैकिंग वर्ण का उपयोग करते हैं। कोडपेज 437 जैसे पुराने एनकोडिंग एकल-बाइट बॉक्स ड्राइंग वर्णों का समर्थन करते हैं। जब आप ASCII रेंज के बाहर के वर्णों का उपयोग करते हैं, तो आपको यह निर्दिष्ट करना चाहिए कि कौन से एन्कोडिंग मान्य हैं। en.wikipedia.org/wiki/Box-drawing_character en.wikipedia.org/wiki/Unicode
लेवल रिवर सेंट

2
"विधि" संभवतः गैर-ऑब्जेक्ट-ओरिएंटेड भाषाओं में एक विधि के निकटतम निकटतम संभव प्राप्त करने के लिए "नामित फ़ंक्शन" होना चाहिए। (उदाहरण के लिए, सी, एक व्यापक रूप से इस्तेमाल की जाने वाली भाषा, तरीके नहीं हैं, लेकिन उनके पास फ़ंक्शन नाम हैं।) अधिकांश भाषाओं में मुझे पता है कि कौन सी विधियाँ हैं, वे उस भाषा के एक नामित फ़ंक्शन के बराबर हैं। (मेरे द्वारा ज्ञात सर्वोत्तम अपवाद C ++ है, जहां एक नामित फ़ंक्शन का उपयोग करना इस कार्य के लिए एक विधि का उपयोग करने की तुलना में बहुत अधिक प्रशंसनीय होगा, क्योंकि यह वास्तव में स्पष्ट नहीं है कि आप किस तरह की वस्तु के साथ विधि को संबद्ध करेंगे; ।)

जवाबों:


9

पायथन 3 , 232 बाइट्स

उन लोगों के लिए धन्यवाद जिन्होंने इसे नीचे गिराने में मदद की।

एन्क्रिप्शन के भीतर एन्क्रिप्शन ...

q=lambda x,y:x+y+x+y+x
r=lambda a,b,c,d,e:a+q(q(b*3,c),d)+e+"\n"
print(((r(*"╔═╤╦╗")+q(q("║ %d │ %d │ %d "*3+"║\n",r(*"╟─┼╫╢")),r(*"╠═╪╬╣"))+r(*"╚═╧╩╝"))%eval(input())).replace(*"0 "))

इसे ऑनलाइन आज़माएं!

गोल्फ होना।


मैंने यह कैसे नहीं देखा कि ... यह पूरे कारण की तरह है कि मैंने पायथन 2 का उपयोग किया, लेकिन धन्यवाद।
लीक नून

1
वास्तव में आप पायथन 3 का उपयोग कर रहे हैं, तब से आपको पहली पंक्ति की आवश्यकता नहीं होगी।
आउटगोल्फ

1
आप अंतिम पंक्ति: tio पर और अधिक परिनियोजन निकाल सकते हैं
कॉनर ओ'ब्रायन

F की परिभाषा निकालें और i को परिभाषित करें जैसा कि i=["╔"+(g+"╦")*2+g+"╗"]+d+2*(["╠"+(e+"╬")*2+e+"╣"]+d)+["╚"+(h+"╩")*2+h+"╝"]4 बाइट्स बचाता है
आधिकारिक

7

सी (जीसीसी) , 398 395 291 बाइट्स

स्ट्रिंग के माध्यम से काम करके 3 बाइट्स को बचाया, और 104 (!) लीक नयन के लिए धन्यवाद।

#include<locale.h>
#define q(x,y) x y x y x
#define D L"╝"q(q("═══","╧"),"╩")"╚"q(q("\n║"q(q(" & ","│"),"║")"║","\n╢"q(q("───","┼"),"╫")"╟"),"\n╣"q(q("═══","╪"),"╬")"╠")"\n╗"q(q("═══","╤"),"╦")"╔"
i;f(int*t){setlocale(LC_ALL,"");for(i=721;i--;)wprintf(L"%lc",D[i]%19?D[i]:*t++?48+t[-1]:32);}

इसे ऑनलाइन आज़माएं!

सी (जीसीसी) , 395 बाइट्स

मैं इसे यहाँ रखता हूँ ताकि इसकी अधिक स्पष्टता हो सके कि कार्यक्रम कैसे काम करता है।

#include<locale.h>
#define A L"\n╢───┼───┼───╫───┼───┼───╫───┼───┼───╟"
#define B L"\n║ & │ & │ & ║ & │ & │ & ║ & │ & │ & ║"
#define C L"\n╣═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╠"
#define E B A B A B
#define D L"╝═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╚"E C E C E L"\n╗═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╔"
i;f(int*t){setlocale(LC_ALL,"");for(i=721;i--;)wprintf(L"%lc",D[i]%19?D[i]:*t++?48+t[-1]:32);}

इसे ऑनलाइन आज़माएं!

सी में यूनिकोड के साथ काम करना ... महंगा है। int*लिंक में और विनिर्देश में दिखाए गए अनुसार इनपुट लेता है ।

मैं यह देखने जा रहा हूं कि क्या मैं स्ट्रिंग को हार्डकोड करने के बजाय कुछ संख्या जादू का उपयोग करके बाइट्स बचा सकता हूं।



@ लीकन हुह, धन्यवाद! यह TIO के अनुसार 291 बाइट्स है
कॉनर ओ'ब्रायन

TIO की गिनती SBCS का उपयोग करके की जा रही है ।
लीक नून

6

PHP , 297 बाइट्स

<?for(;$l<19;$l++)echo$l&1?strtr(vsprintf(str_pad("",67,"║ %d │ %d │ %d "),array_slice($_GET,9*($l/2^0)-9,9)),0," "):str_pad([╔,╟,╠,╚][$b=$l?$l<18?$l%6<1?2:1:3:0],108,strtr("11101110111".[╦,╫,╬,╩][$b],[[╤,═],[┼,─],[╪,═],[╧,═]][$b])).[╗,╢,╣,╝][$b],"
";

इसे ऑनलाइन आज़माएं!

विस्तारित

for(;$l<19;$l++)  # loop thrpugh lines
  echo$l&1 # Output
    ?strtr(
        vsprintf(str_pad("",67,"║ %d │ %d │ %d ") # formated string for lines with numbers
        ,array_slice($_GET,9*($l/2^0)-9,9)) # nine items of the input array
      ,0," ") #replace zeros with space
    :str_pad([╔,╟,╠,╚][$b=$l?$l<18?$l%6<1?2:1:3:0] # start character non number lines and switch number four cases
      ,108 # fill too 108 bytes
      ,strtr("11101110111".[╦,╫,╬,╩][$b] # with string 
        ,[[╤,═],[┼,─],[╪,═],[╧,═]][$b]))  #replace ones and zero with the two character in array chosed 
    .[╗,╢,╣,╝][$b] # end row with chosen character
  ,"
    "; # end line with new line

दोनों संस्करणों के लिए उपयोग किए गए फ़ंक्शंस

vsprintf , strtr , str_pad , array_slice , array_chunk

PHP , 313 बाइट्स

<?$r=($s=str_pad)(╔,108,($t=strtr)(($p=11101110111).╦,[╤,═])).╗;foreach(array_chunk($_GET,9)as$v)$r.=$t(vsprintf($s("
",68,"║ %d │ %d │ %d "),$v),0," ").(++$k%9?$k%3?$s("
╟",109,$t($p.╫,[┼,─])).╢:$s("
╠",109,$t($p.╬,[╪,═])).╣:"");echo$r.$s("
╚",109,$t($p.╩,[╧,═])).╝;

इसे ऑनलाइन आज़माएं!


यह कैसे काम करता है?
साइओस

@ मेरे पास मेरे नए संस्करण के लिए एक स्पष्टीकरण जोड़ा गया है
जोर्ग ह्यूल्सरमन

5

T-SQL, 445 437 बाइट्स (381 अक्षरों में)

DECLARE @r INT=0,@ NVARCHAR(999)=N'╔=╤=╤=╦=╤=╤=╦=╤=╤=╗P'p:SELECT @+=FORMAT(CAST(SUBSTRING(a,@r*9+1,9)AS INT),N'║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║P')FROM t
SET @r+=1IF @r=9SET @+=N'╚=╧=╧=╩=╧=╧=╩=╧=╧=╝P'ELSE IF @r%3=0SET @+=N'╠=╪=╪=╬=╪=╪=╬=╪=╪=╣P'ELSE SET @+=N'╟-┼-┼-╫-┼-┼-╫-┼-┼-╢P'IF @r<9GOTO p
PRINT REPLACE(REPLACE(REPLACE(REPLACE(@,'=',N'═══'),'-',N'───'),'0',' '),'P',CHAR(13))

इनपुट स्तंभ में संग्रहीत अंक की एक स्ट्रिंग के माध्यम से है एक पूर्व मौजूदा तालिका के टी , अनुमोदित विधियों प्रति

प्रारूप और स्पष्टीकरण :

DECLARE @r INT=0, @ NVARCHAR(999)= N'╔=╤=╤=╦=╤=╤=╦=╤=╤=╗P'
p:
    SELECT @+= FORMAT(CAST(SUBSTRING(a, @r*9+1, 9) AS INT),
        N'║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║P') FROM t
    SET @r+=1
    IF @r=9 SET @+= N'╚=╧=╧=╩=╧=╧=╩=╧=╧=╝P'
    ELSE IF @r%3=0 SET @+= N'╠=╪=╪=╬=╪=╪=╬=╪=╪=╣P'
    ELSE SET @+= N'╟-┼-┼-╫-┼-┼-╫-┼-┼-╢P'
IF @r<9 GOTO p
PRINT REPLACE(REPLACE(REPLACE(REPLACE(@, '=',N'═══'), '-',N'───'), '0',' '), 'P',CHAR(13))

पाश की शीर्ष पंक्ति में मैं स्तंभ से इनपुट स्ट्रिंग की अगली 9 अंक हो रही है एक पहले से मौजूद तालिका के टी

मैं अंकों के उस स्ट्रिंग को पूर्णांक में परिवर्तित करता हूं, और FORMATएक कस्टम टेक्स्ट टेम्पलेट का उपयोग करके उन्हें प्रदर्शित करने के लिए .Net फ़ंक्शन का उपयोग करता हूं '║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║ 0 │ 0 │ 0 ║P'

उसके बाद मैं सिर्फ उचित विभक्त लाइन को जोड़ता हूं, और आउटपुट से पहले कुछ बाइट-सेविंग प्रतिस्थापन करता हूं।

आउटपुट परिणाम फलक में प्रदर्शित होता है:

╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗
║ 8 │ 5 │   ║   │   │ 2 ║ 4 │   │   ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║ 7 │ 2 │   ║   │   │   ║   │   │ 9 ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║   │   │ 4 ║   │   │   ║   │   │   ║
╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣
║   │   │   ║ 1 │   │ 7 ║   │   │ 2 ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║ 3 │   │ 5 ║   │   │   ║ 9 │   │   ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║   │ 4 │   ║   │   │   ║   │   │   ║
╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣
║   │   │   ║   │ 8 │   ║   │ 7 │   ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║   │ 1 │ 7 ║   │   │   ║   │   │   ║
╟───┼───┼───╫───┼───┼───╫───┼───┼───╢
║   │   │   ║   │ 3 │ 6 ║   │ 4 │   ║
╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝

पहले मेरे पास कुछ अन्य ड्राइंग पात्रों के लिए कुछ अतिरिक्त प्रतिस्थापन थे, लेकिन उन्होंने अंततः मुझे बाइट्स नहीं बचाए।

EDIT 1 : 1 के@r बजाय शून्य पर शुरू करके 8 बाइट्स को बचाया , और कुछ अनावश्यक स्थानों को हटा दिया।


4

रेटिना , 196 167 बाइट्स

.{27}
¶N#=XZ#Q¶|$&
\d{9}\B
$&¶M#─┼Y#P¶|
\d{3}
 $& |
\B\d
 │ $&
^¶.*
B#=RT#E
$
¶H#=UW#K
+`#([^#¶]+)([^#¶])#
#$1#$2#$1#$2#$1#
#(.)#
$1$1$1
T`0=|#L` ═-╬

इसे ऑनलाइन आज़माएं! इनपुट को स्ट्रिंग की लंबाई 81 के रूप में लिया जाता है। स्पष्टीकरण: क्योंकि बॉक्स ड्रॉइंग कैरेक्टर्स की कीमत तीन बाइट्स होती है, यूनिकोड कोड पॉइंट्स ═-╬का उपयोग कोड में किया जाता है =|#A-Z(सभी वर्णों का उपयोग नहीं किया जाता है, लेकिन रेंज में बाइट्स बाइट्स को बचाता है)। इसके अतिरिक्त पंक्तियों को #संकेतों का उपयोग करके संपीड़ित किया जाता है: का a#bcd#eविस्तार होता है abbbcbbbcbbbdbbbcbbbcbbbdbbbcbbbcbbbe

.{27}
¶N#=XZ#Q¶|$&

╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣प्रत्येक तीसरी पंक्ति के लिए सम्मिलित करता है , साथ ही 27 के प्रत्येक समूह की शुरुआत में।

\d{9}\B
$&¶M#─┼Y#P¶|

इंसर्ट ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢अन्य पंक्तियों के बीच, के साथ साथ उन पंक्तियों के शुरू में है।

\d{3}
 $& |

हर तीन अंकों के बाद सम्मिलित होते हैं । अब सभी s डाले गए हैं।

\B\d
 │ $&

|अंकों के सभी शेष जोड़े के बीच सम्मिलित होता है । (यह एक पाइप की बजाय वास्तविक बॉक्स ड्रॉइंग कैरेक्टर है। दुर्भाग्य से अक्षर ─│┼एक-दूसरे से बहुत दूर कोड हैं और प्लेसहोल्डर्स का उपयोग करते समय इसे बनाने के लिए डबल बॉक्स कैरेक्टर हैं।)

^¶.*
B#=RT#E

पहली पंक्ति को बदलता है ╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗(यह पहली पंक्ति को पहली जगह में नहीं जोड़ने पर 1 बाइट बचाता है)।

$
¶H#=UW#K

╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝अंतिम पंक्ति के बाद जोड़ता है ।

+`#([^#¶]+)([^#¶])#
#$1#$2#$1#$2#$1#

फैलता है a#bcd#e, पहले a#bc#d#bc#d#bc#e, फिर a#b#c#b#c#b#d#b#c#b#c#b#d#b#c#b#c#b#e

#(.)#
$1$1$1

को बदलता #b#है bbb। इससे सड़न पूरी हो जाती है।

T`0=|#L` ═-╬

सभी शून्य प्रविष्टियों को हटाता है, और प्लेसहोल्डर्स को बॉक्स आरेखण वर्णों के साथ बदल देता है।


आप 0अंतरिक्ष से बदलना भूल गए ।
लीकी नून

हर पंक्ति के चारों ओर दोहरी रेखाएँ हैं, न कि केवल सीमा और 3x3 क्षेत्रों की।
जोएल कोएहॉर्न

@JoelCoehoorn फिक्स्ड, क्षमा करें।
नील

@LeakyNun धन्यवाद, मैंने इसे अनदेखा कर दिया। (इसके अलावा, मैं लाइनों के साथ, या विशेष रूप से केवल रिक्त स्थान से बचना पसंद करता हूं, यही वजह है कि मैंने 2-बाइट की बचत के लिए देखा।)
नील

3

SOGL V0.12 , 174 172 164 160 158 बाइट्स

«ž#>]Wž²6√±_ΕΨ╥╬]v←ē⅓ZΗ⌡z∫◄‽q   §↑╗∑Ολ[Μ↕z↓/∆Yn⁄:Ο║χ≥¾▓g*≈]═+π℮─6⁽SE/⁷,0+►Ƨ⌡u\^⁄-▼0cΦ“╤─┼╬│║═╔╗╚╝”Φ⅜nΡ¡ΞΨīŗ(`½│uģ“ ╬ζ─{ζ} 6Δ¹∑A'⁄─{IaW}¹∑#¶ŗ3 ¶ŗ ”+Ƨøp+!!┌d0@ŗčŗ

अत्यधिक लंबी व्याख्या:

...“                          push a big base-43 encoded number; will be used later. It's pushed here to save a byte on a quote
    ...”                      push "╤─┼╬│║═╔╗╚╝" - the chars in SOGLs encoding
        ...“                  push 679301851737965572513837476350078477
             ╬                push "╬"
              ζ               convert it to its codepoint (9580)
               ─              convert that number to an array of base-9580 numbers
                {ζ}           convert each number to a character (pushing each on the stack)
                    6Δ        push all ascii chars up to 6 (" !"#$%&'()*+,-./0123456")
                      ¹∑      join all the strings on the stack together ("╤─┼╬│║═╔╗╚╝╦╟╫╢╠╪╣╧╩ !"#$%&'()*+,-./0123456")
                        A     save on variable `A`. Now ontop of the stack is the 1st big number
                         '⁄─  onvert from base 43

{   }                           for each number do
 I                                increase
  aW                              get its position in the variable A
     ¹∑                         join all the strings ontop of the stack (the loop above pushed each char separately)
       #¶ŗ                      replace quote (") characters with newlines
          3 ¶ŗ                  replace 3s with "¶"
               ”+               append "”"
                 Ƨøp+           append "øp"
                     !!         execute the created code as SOGL
                       ┌        push "-"
                        d       push variable d - defaults to string input. In a full program could be set as an input
                         0@ŗ    replace zeroes with spaces
                            č   chop into an array
                             ŗ  replace ["-" with input chopped - so each iteratively]

जो प्रोग्राम निष्पादित किया गया है:

───!#
 - $
¶%&¶'(
)╪)╪)+
)╤)╤),
)╧)╧).
┼#
+╬+/
0!╫0!1
,╦,2
.╩.4
5│$║&
#0
═══)
$│$5
║&&%
╠/╬+╣6'*
╟1╫0!╢(
(6
╔2╦,╗6'**╚4╩.╝”øp

जहां सभी लेकिन अंतिम पंक्ति सिर्फ हैं in the entire program replace occurrences of the last char of this line with the rest of this line। यही कारण है कि यह सिर्फ चार वर्णों को यादृच्छिक असिसी बनाने के लिए संभव था (लेकिन इतनी रिक्त स्थान, डैश और उद्धरण प्राप्त करना उपयोगी रूप से उपयोग करने के लिए थोड़ी देर लिया गया है)

...”    push the whole sudoku grid
    øp  print nothing (prevents bug that this code would already print and pop the result)

यह कोशिश करो!
ऑनलाइन इंटरप्रेटर कोड अधिक सही है क्योंकि टैब एसई के साथ काम नहीं करते हैं

-8 बाइट्स: ब्रूट फोर्स रिप्लेसमेंट पूरे बोर्ड को कंप्रेस करके, फिर विदेशी कोड्स (कोडपेज पर) उनके कोडपॉइंट्स के साथ बदल रहा है। ऐसा करने से पुराने कार्यक्रम की तुलना में एक घंटे कम समय लगता है ...
-4 बाइट्स: संपीड़ित स्ट्रिंग को संकुचित करना ...
-2 बाइट्स: सरणी के लिए एक चर + स्ट्रिंग का उपयोग करना


2

जावास्क्रिप्ट (ईएस 6), 246 बाइट्स / 198 चार्ट

(n,r=(x,y)=>x+y+x+y+x,q=s=>([u,w,x,y,z]=[...s[0]],u+r(r(w+w+w,x),y)+z+`
`))=>q`╔═╤╦╗`+n.reduce((o,v,i)=>o+"║││"[i++%3]+` ${v||" "} `+(i%9?e:`║
`+(i-27&&i-54?i<81?q`╟─┼╫╢`:e:q`╠═╪╬╣`)),e="")+q`╚═╧╩╝`

इनपुट पूर्णांक की एक सरणी है। लीके नन के पायथन जवाब के रूप में एक ही दो सहायक कार्यों का उपयोग करके समाप्त हुआ , इसलिए क्रेडिट वहां जाता है।

यदि functionआवश्यक हो, 263 बाइट्स / 215 चार्ट

function g(n,r=(x,y)=>x+y+x+y+x,q=s=>([u,w,x,y,z]=[...s[0]],u+r(r(w+w+w,x),y)+z+`
`)){return q`╔═╤╦╗`+n.reduce((o,v,i)=>o+"║││"[i++%3]+` ${v||" "} `+(i%9?e:`║
`+(i-27&&i-54?i<81?q`╟─┼╫╢`:e:q`╠═╪╬╣`)),e="")+q`╚═╧╩╝`}

टेस्ट स्निपेट

81 नंबर के किसी भी इनपुट समर्थित है ( 1234, 1, 2, 3, 4[1 2 3 4], आदि)। सर्वश्रेष्ठ को पूर्ण पृष्ठ के रूप में देखा जाता है।

f=
(n,r=(x,y)=>x+y+x+y+x,q=s=>([u,w,x,y,z]=[...s[0]],u+r(r(w+w+w,x),y)+z+`
`))=>q`╔═╤╦╗`+n.reduce((o,v,i)=>o+"║││"[i++%3]+` ${v||" "} `+(i%9?e:`║
`+(i-27&&i-54?i<81?q`╟─┼╫╢`:e:q`╠═╪╬╣`)),e="")+q`╚═╧╩╝`

onload=I.oninput=_=>O.innerHTML=(m=I.value.match(/\d/g))&&m.length==81?f(m.map(x=>+x)):''
<textarea id=I rows=3 style="width:95%">8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, 0, 0, 9, 0, 0 ,0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 7, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 4, 0</textarea>
<pre id=O>


2

बैच, 332 बाइट्स

@echo off
set/ps=
set s=%s:0= %
call:l É Í Ñ Ë »
set t="Ç Ä Å × ¶"
for %%i in (%t% %t% "Ì Í Ø Î ¹" %t% %t% "Ì Í Ø Î ¹" %t% %t% "È Í Ï Ê ¼")do call:c %%~i
exit/b
:c
set t=º
for %%j in (³ ³ º ³ ³ º ³ ³ º)do call set t=%%t%% %%s:~,1%% %%j&call set s=%%s:~1%%
echo %t%
:l
set t=%2%2%2%3%2%2%2%3%2%2%2
echo %1%t%%4%t%%4%t%%5

CP437 में होने के लिए कंसोल की आवश्यकता है। यदि यह आपका डिफ़ॉल्ट नहीं है, तो आप CHCP 437कमांड का उपयोग करके इसे बदल सकते हैं यदि आपका कंसोल ट्रू टाइप फ़ॉन्ट पर सेट है। (अगर यह CP437 पहले से ही आपका डिफ़ॉल्ट कोड पेज है तो यह केवल रास्टर फॉन्ट के साथ काम करेगा।) सीपी 4 में यह कोड कैसा दिखता है:

@echo off
set/ps=
set s=%s:0= %
call:l ╔ ═ ╤ ╦ ╗
set t="╟ ─ ┼ ╫ ╢"
for %%i in (%t% %t% "╠ ═ ╪ ╬ ╣" %t% %t% "╠ ═ ╪ ╬ ╣" %t% %t% "╚ ═ ╧ ╩ ╝")do call:c %%~i
exit/b
:c
set t=║
for %%j in (│ │ ║ │ │ ║ │ │ ║)do call set t=%%t%% %%s:~,1%% %%j&call set s=%%s:~1%%
echo %t%
:l
set t=%2%2%2%3%2%2%2%3%2%2%2
echo %1%t%%4%t%%4%t%%5

2

अन्य उत्तरों से कटे विचारों के साथ:

C # (.NET Core) , 401 बाइट्स, 349 चार्ट

string s(string x){Func<string,string,string>q=(m,n)=>m+n+m+n+m;var a="╔"+q(q("=","╤"),"╦")+"╗";for(var i=0;i<9;) {a+=int.Parse(x.Substring(i*9,9)).ToString("\n║"+q(q(" 0 ","│"),"║")+"║\n")+(i++<8?(i%3>0?"╟"+q(q("-","┼"),"╫")+"╢":"╠"+q(q("=","╪"),"╬")+"╣"):"╚"+q(q("=","╧"),"╩")+"╝");}return a.Replace("=","═══").Replace("-","───").Replace("0"," ");}

Ungolfed:

static public string s(string x)
{
    Func<string,string,string>q=(m,n)=>m+n+m+n+m;
    var a="╔"+q(q("=","╤"),"╦")+"╗";
    for (var i=0;i<9;) //once per row
    {
        //parse that row to an int, then spit out a formatted string
        a += int.Parse(x.Substring(i*9,9)).ToString("\n║"+q(q(" 0 ","│"),"║")+"║\n") 
          // as well as a trailing row for the box
          + (i++<8?(i%3>0?"╟"+q(q("-","┼"),"╫")+"╢":"╠"+q(q("=","╪"),"╬")+"╣"):"╚"+q(q("=","╧"),"╩")+"╝");
    }
    //expand placeholder characters before returning
    return a.Replace("=","═══").Replace("-","───").Replace("0"," ");
}

इसे ऑनलाइन आज़माएं!

मेरा जवाब:

सी # (.NET कोर) , 509 430 418 बाइट्स, 328 चार्ट

string b(string x){var a="╔=╤=╤=╦=╤=╤=╦=╤=╤=╗\n║";for(int i=0,j=0,k,l,m;j<3;j++)for(k=0;k<3;k++){for(l=0;l<3;l++)for(m=0;m<3;)a+=" "+x[i++]+(m++<2?" │":" ║");a+=i<80?(k<2?"\n╟-┼-┼-╫-┼-┼-╫-┼-┼-╢\n║":"\n╠=╪=╪=╬=╪=╪=╬=╪=╪=╣\n║"):"\n╚=╧=╧=╩=╧=╧=╩=╧=╧=╝";}return a.Replace("=","═══").Replace("-","───").Replace("0"," ");}

Ungolfed:

public string s(string x)
{
    var a = "╔=╤=╤=╦=╤=╤=╦=╤=╤=╗\n║";
    for (int i=0,j=0,k,l,m;j<3;j++)
    {
        for (k = 0; k < 3;k++)
        {
            for (l = 0; l < 3; l++)
            {
                for (m = 0; m < 3;)
                    a += " " + x[i++] + (m++ < 2 ? " │" : " ║");
            }
            a += i < 80 ? (k < 2 ? "\n╟-┼-┼-╫-┼-┼-╫-┼-┼-╢\n║": "\n╠=╪=╪=╬=╪=╪=╬=╪=╪=╣\n║") 
                        : "\n╚=╧=╧=╩=╧=╧=╩=╧=╧=╝";
        }
    }
    return a.Replace("=", "═══").Replace("-","───").Replace("0"," ");
}

I also looked at using a lambda for the `for` loops here, but it actually cost me one byte (saved 10 bytes per loop, with 41 bytes of overhead).

इसे ऑनलाइन आज़माएं!


क्या आपको प्रत्येक ड्राइंग चरित्र को दो बाइट्स के रूप में गिनने की आवश्यकता है?
ब्रैड

मैंने किया, अब तय किया। मेरा मतलब था कि उन चरित्रों के कारण बाइट्स के बजाय प्रश्न और वर्णों की गणना करना, लेकिन मुझे लगता है कि अब बहुत देर हो चुकी है।
जोएल कोएहॉर्न

हां, बाइट्स कठिन है, कुछ एस्किसी प्रतिस्थापन बाइट्स को बचाते हैं लेकिन पात्रों को प्रभावित नहीं करते हैं (या यहां तक ​​कि पात्रों को चोट भी पहुंचाते हैं)। मैं टी-एसक्यूएल पर काम कर रहा हूं, और चार बनाम नच एक बहुत बड़ा अंतर है।
ब्रैड

1

टुकड़ा , 3645 बाइट्स

... यह एक टाइपो नहीं है ...

ooooooZZ-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-).
|`xxxx-x--(x---x---x---x---x-v-x---x---x---x---x---x-.`K-)-K-)-K-)-K-).
|b|`xx-x--(x-v-x---x-v-x---x-x-x---x-v-x---x-v-x---x-x-x---x-v-x---x-.`K-).
|>xd`x-x(v-x-x-x-v-x-x-x-v-x-x-x-v-x-x-x-v-x-x-x-v-x-x-x-v-x-x-x-v-x-x-x-.|
||`--x-x-x(x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x/.
|`--z',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\',/\','
`-. |,< >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.| >.|
*-x-/xZ/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ^/xZ'
Z~' |`'|`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`' |`','`'
    `)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)-K-)'
=
oooooo).h
`)))--^M^Zh
=
oooooo
|    `(--------------------------------------------------------------------------------------------------------va
KZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ^cg
)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx-xKZvvZ
xxxxxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxxx-Kxxxx}e
)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)x))xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)x))xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)x)b`feac
  c
=
oooooo
,'   `(--------------------------------------------------------------------------------------------------------.cba
KZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ^x^^)v--.
xx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxxx-xK-'f e`.
)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx-x-K-+Z+Z}e
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxK^}b gac
xxxxxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxxx-K^d
=
oooooo
,-'
KZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtabgfv------.
)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx-xK^^x-Zv-vZ}e
xxxxxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxxxK^---^}cade,]b
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)-K----^-^^~'
,v'
db
=
oooooo
,--' `(--------------------------------------------------------------------------------------------------------v-.,-v-ZZZZZZZZZZZZf
KZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'a{x.df
)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xx)xxKx-xxv+Zc
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)x-KZx+bge
xx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxx)xxxxxxxxxxxx---K\--^c
 a^b
=
oooooo
,---'`(--------------------------------------------------.
KZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'gf
)xxxxx)xxxxx)xxxxx)xxxxx)xxxxx)xxxxx)xxxxx)xxxxx)xxxxx)xx-^KZc
)xxxxx)x)xxx)x)xxx)xxxxx)x)xxx)x)xxx)xxxxx)x)xxx)x)xxx)xxbahKZ\ZZZ
x))xxxxxxxxxxxxxxxx))xxxxxxxxxxxxxxxx))xxxxxxxxxxxxxxxx))-K-eh|fff
 ,--K-v-v-K--v-vK-v---K-----K-----K-----K-----K-----K `--Z-Z--'
A/ab/B/e/C/cd/D/-e/A
*}s

इसे ऑनलाइन आज़माएं! , की तरह। TIO संस्करण में (a) के एक तिहाई भाग के बारे में एक कटऑफ हैt 4 बाद oooooo) के , ताकि इसे 60 सेकंड से कम समय में समाप्त कर दिया जाए। पूर्ण संस्करण मेरी मशीन पर लगभग 1m25s लेता है, और TIO लगभग आधा लगता है। इसका अर्थ यह भी है कि TIO केवल आउटपुट की पहली 7 लाइनें दिखाता है।

मेरा पहला मसौदा 19758 के एक बड़े बाइट में तौला गया था, और मुझे चलाने के लिए लगभग 8m30s लगे। अंतिम समाधान, पूर्व-गोल्फिंग, एक चंचल 5980 बाइट्स था, जिसमें केवल 2m07s थे।

तो, यह कैसे काम करता है?

यह 82 बाइट्स, 81 अंकों की एक स्ट्रिंग लेता है, इसके बाद एक टर्मिनेटर होता है। \0या \nया कोई अन्य नंबर करेगा। (यह कार्यान्वयन वास्तव में केवल पहले 81 को देखता है, लेकिन इसके लिए कम से कम एक और की आवश्यकता होती है, क्योंकि चिप समाप्त हो जाएगी यदि उसने अपना इनपुट समाप्त कर दिया है। यदि यह अस्वीकार्य है, तो ध्वज -zका उपयोग किया जा सकता है, जो प्रभावी रूप से एक अनंत संख्या को जोड़ता है।\0 बाइट्स को है। इनपुट का अंत।) छोटा TIO कोड वास्तव में सभी 81 बाइट्स के लिए नहीं मिलता है, इसलिए यह बिंदु वहां मौजूद है।

जिस तरह से मैंने इसे लागू किया है, यह केवल इनपुट के निम्न 4 बिट्स को देखता है, इसलिए कुछ भी, वास्तव में, एक सुडोकू 'पहेली' हो सकता है, कच्चे बाइनरी डेटा से, शेक्सपियर के कम-ज्ञात कार्यों तक। कोई भी वर्ण, जिसके निम्न 4 बिट सभी शून्य हैं, एक स्थान (एक विशेष मामला) के रूप में दिखाई देगा, अन्य सभी वर्ण मानचित्र में आते हैं123456789:;<=>? । (तो, पिछले कुछ अंक नहीं हैं, लेकिन न ही सामान्य सुडोकू में 10 एक वैध संख्या है)।

बॉक्स-ड्रॉइंग वर्णों के लिए, यह UTF-8 का उत्पादन करता है, जिसमें प्रत्येक के लिए 3 बाइट्स होते हैं।

वास्तविक कार्यान्वयन के बारे में क्या?

चिप एक 3 डी भाषा है जो एकीकृत सर्किट से प्रेरित है। इसमें वायर, लॉजिक गेट और मेमोरी सेल होते हैं। अधिकांश सामान 2D विमानों पर किया जाता है, लेकिन इन विमानों को एक दूसरे के ऊपर रखा जा सकता है। इस तरह यह कार्यक्रम बनाया गया है।

जो लाइनें शुरू होती =हैं, वे परत विभाजक होती हैं। फिर, परतों को ढेर किया जाता है, शीर्ष और बाईं ओर गठबंधन किया जाता है। oकी पिन के रूप में सेवा, संकेत एक परत से दूसरे में पारित करने के लिए अनुमति देता है।

यहां प्रत्येक परत का एक उद्देश्य है, आप उन्हें कार्यों के रूप में सोच सकते हैं। पहली परत सब कुछ नियंत्रित करती है; यह बदले में अन्य परतों में से प्रत्येक को 'कॉल' करता है। यहां एक दोहराव बाएं से दाएं पैटर्न है। यह पैटर्न उन 19 लाइनों में से किस पर हम वर्तमान में प्रिंट कर रहे हैं, का ट्रैक रखता है।

दूसरी परत बल्कि छोटी है, और इसमें बहुत छोटा काम है। यह 0x80आउटपुट की सभी लाइनों के लिए बिट सेट करता है सिवाय उन लाइनों को छोड़कर जिनमें नंबर होते हैं। hचिप तत्व है जो 0x80बिट से मेल खाता है । (के hमाध्यम से वर्णमाला के निचले छोरa सभी आठ आउटपुट बिट्स को परिभाषित करने के ।)

परत तीन वह जगह है जहां हम वास्तव में मुद्रण के मांस में मिलते हैं। यह परत लाइन एक के प्रभारी है। अनगोल्डेड संस्करण की आठ पंक्तियाँ हैं xऔर) ' s , जो प्रत्येक बाइट के आठ बिट्स में से 0 के लिए मैपिंग और 1 है। हालांकि, हम कम पंक्तियों में समान कार्य को पूरा करने के लिए बिट्स में पैटर्न का लाभ उठा सकते हैं।

लेयर फोर, थर्ड की तरह है। यह क्षैतिज दोहरी लाइनों को संभालता है।

परत पांच अंतिम पंक्ति को संभालती है। ध्यान दें कि यह शीर्ष के साथ तार गायब है जो अन्य परतों में है। ऐसा इसलिए है क्योंकि हमें सीक्वेंसर पर नियंत्रण वापस करने की आवश्यकता नहीं है। इसके बजाय, हम यहां निष्पादन को समाप्त कर सकते हैंt

परत छह क्षैतिज एकल लाइनों को संभालती है।

लेयर सात वह जगह है जहाँ संख्याएँ मुद्रित होती हैं। यह प्रत्येक नौ संख्यात्मक रेखाओं के लिए 'कॉल' है। यह इसके निष्पादन के भाग के रूप में 9 बाइट इनपुट का उपभोग करता है।


1

जावास्क्रिप्ट (ईएस 6), 222 बाइट्स

ES6 कार्यों के लिए लघु वाक्यविन्यास का उपयोग करना - utf8, 222 बाइट्स ( https://mothereff.in/byte-counter ) में एन्कोड किए गए 174 चार्ट । उपयोग करने के function ...लिए 16 और बाइट्स की आवश्यकता होती है।

F=v=>[1,...v].map((x,i)=>'│║│'[i%3]+` ${x||' '} `+(i%9?'':`║
${[h,r,s,u,t]=i%27?'─╟╫┼╢':i>80?'═╚╩╧╝':i?'═╠╬╪╣':'═╔╦╤╗',r+(s=(u=(h+=h+h)+u+h+u+h)+s)+s+u+t}
`)).join``.slice(6)

कम गोल्फ वाला

F=v=>{
   // horizontal lines are appended after each 9th element
   // so I need to prepend a dummy first element to draw the top horizontal line
   v = [1, ...v];
   return v.map( (x,i) => 
     '│║│'[i % 3] + ` ${x||' '} ` // left bar and cell value
     + ( i % 9 ? '' // add horizontal line after each 9th element
       // the line drawing characters are chosen according to the value of i
       : `║\n${ [h, r, s, u, t] = 
         i % 27 != 0
         ? '─╟╫┼╢'
         : i > 80 
           ? '═╚╩╧╝' // i==81, bottom row
           : i != 0
             ? '═╠╬╪╣'
             : '═╔╦╤╗', // i==0, top row
         r + (s = (u = (h += h + h) + u + h + u + h) + s) + s + u + t
         }\n`
       )
   ).join``
   .slice(6) // cut the first cell (the dummy element)
}

F=v=>[1,...v].map((x,i)=>'│║│'[i%3]+` ${x||' '} `+(i%9?'':`║
${[h,r,s,u,t]=i%27?'─╟╫┼╢':i>80?'═╚╩╧╝':i?'═╠╬╪╣':'═╔╦╤╗',r+(s=(u=(h+=h+h)+u+h+u+h)+s)+s+u+t}
`)).join``.slice(6)

function go() {
  var i=I.value
  i = i.match(/\d+/g).map(x => +x); // convert strings to numbers
  O.textContent = F(i)
}
#I { width: 90% }
<input id=I value='8 5 0 0 0 2 4 0 0 7 2 0 0 0 0 0 0 9 0 0 4 0 0 0 0 0 0 0 0 0 1 0 7 0 0 2 3 0 5 0 0 0 9 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 7 0 0 1 7 0 0 0 0 0 0 0 0 0 0 3 6 0 4 0'>
<button onclick='go()'>go</button>
<pre id=O></pre>


1

जावा (ओपनजेडके 8) , 279 बाइट्स

String f(int[]a){String P="0121213121213121214",R[]={"╔═╤╦╗","║ │║║x","╟─┼╫╢","╠═╪╬╣","╚═╧╩╝"},r="";for(int X:P.getBytes()){for(int x:P.replace("1",R[X-=48].length()>5?"151":"111").getBytes())r+=R[X].charAt(x-48);r+="\n";}for(int i:a)r=r.replaceFirst("x",i>0?""+i:" ");return r;}

इसे ऑनलाइन आज़माएं!

बाइट गिनती के लिए, CP-437 का उपयोग करें, जो मूल रूप से जावाIBM437 (हाल के एपीआई) या के रूप में जावा द्वारा समर्थित हैCp437 (पुराने एपीआई) के ; इसलिए एक सिस्टम का उपयोग करें जिसमें यह चारसेट है इस डिफ़ॉल्ट को चारसेट के रूप में करें।

यह कोड जावा 5 के बाद से संगत है, लेकिन केवल जावा 8 पर परीक्षण किया गया था।

व्याख्या

String f(int[]a){
  String P="0121213121213121214",                         // Both lines and rows are repeated according to this pattern.
         R[]={"╔═╤╦╗","║ │║║x","╟─┼╫╢","╠═╪╬╣","╚═╧╩╝"},  // Characters found on each line.
                                                          //   (note the 'x')
         r="";                                            // The string under construction
  for (int X: P.getBytes()) {                             // For each line,
    for (int x:                                           //  For each character in the pattern,
         P.replace("1",R[X-=48].length()>5?"151":"111")   //    *but* with a cell width of 3,
                                                          //    and with an optional character ('x')
         .getBytes())
      r+=R[X].charAt(x-48);                               //   append the real mapped character
    r+="\n";                                              //  then append a new line
  }
  for(int i:a)                                            // For each number in the input
    r = r.replaceFirst("x",i>0?""+i:" ");                 //  replace the first 'x' with that number.
                                                          //    (or space if zero)
  return r;                                               // Return the constructed string.
}

1

Tcl , 599 बाइट्स (295 वर्ण)

बहुत भोली दृष्टिकोण, लेकिन मुझे सिर्फ यह करना था कि यह किसी भी उपाय से विजेता न हो:

puts ╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗
set r ║ 
lmap x $L {if !$x {set x \ }
set r $r\ $x\ [expr [incr i]%3?"│":"║"]
if ![expr $i%9] {puts $r\n[expr $i%27?"╟───┼───┼───╫───┼───┼───╫───┼───┼───╢":$i<72?"╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣":"╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝"]
set r ║}}

इसे ऑनलाइन आज़माएं!


यह 599 UTF-8 बाइट्स है। आपको बाइट्स बचाने के लिए आम बॉक्स पात्रों का पुन: उपयोग करने की कोशिश करनी चाहिए
dzaima

@ दज़ीमा: मैं जानता हूं, मैंने एक कीबोर्ड
सर्गियोल

@ दाज़िमा: यही कारण है कि मैंने बहुत भोलेपन के साथ
सर्गियोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.