मैट्रिक्स इनपुट को सरल बनाएं!


20

मैंने मैट्रिस से संबंधित कुछ चुनौतियां लिखी हैं , और सभी के लिए सामान्य यह है कि मैं नीचे दिए गए फॉर्मेट का उपयोग करता हूं जब मैट्रिस का प्रतिनिधित्व करता हूं, उदाहरण और परीक्षण दोनों मामलों में:

16    2    3   13
 5   11   10    8
 9    7    6   12
 4   14   15    1

यह कई भाषाओं में एक बोझिल प्रारूप है।


चुनौती:

एक प्रोग्राम / फ़ंक्शन लिखें, जो इनपुट के रूप में शीर्ष पर दिए गए फॉर्म पर एक मैट्रिक्स ले सकता है (इस पोस्ट से सीधे कॉपी / पेस्ट किया गया है), और नीचे दिखाए गए तीन अन्य पारंपरिक प्रारूपों पर सभी एक ही मैट्रिक्स को आउटपुट करें

इनपुट प्रारूप:

रिक्त स्थान की अलग-अलग संख्याओं और पंक्तियों का प्रतिनिधित्व करने के लिए नई संख्याओं से अलग संख्या (परीक्षण मामलों को देखें)।

  • संख्याओं के बीच रिक्त स्थान की संख्या संगत होने की गारंटी नहीं है। हालाँकि आप यह मान सकते हैं कि प्रत्येक कॉलम में अंतिम अंक संरेखित करें (यदि वह कोई मदद करता है)।
  • पूर्णांक और फ़्लोट्स दोनों हो सकते हैं, और वे सकारात्मक, नकारात्मक या शून्य हो सकते हैं। एक मैट्रिक्स में एक ही समय में पूर्णांक और फ्लोट नहीं होंगे ।
  • आप मान सकते हैं कि कोई भी संख्या 10 वर्णों से अधिक नहीं है, जिसमें नकारात्मक फ़्लोट्स के लिए माइनस और दशमलव बिंदु शामिल हैं।
  • आप मान सकते हैं कि प्रत्येक पंक्ति में और प्रत्येक कॉलम में समान संख्या में प्रविष्टियाँ हैं।
  • कोई खाली इनपुट मैट्रेस नहीं होगा, लेकिन केवल एक पंक्ति या कॉलम के साथ एकल नंबर या मैट्रिसेस हो सकते हैं।
    • आप इन मामलों में परीक्षण मामलों में दिखाए गए आउटपुट प्रारूपों के बीच चयन कर सकते हैं

यदि आपका प्रोग्राम सीधे इस पोस्ट से कॉपी किया गया है और इंटरप्रेटर (STDIN या फ़ंक्शन तर्क या कुछ समतुल्य) के रूप में चिपकाया गया है, तो आपके प्रोग्राम / फ़ंक्शन को इनपुट को संभालना होगा। आपके पास और (या ब्रैकेट के बाद, कोष्ठक, उद्धरण चिह्न, कोष्ठक) जैसे कुछ भी हो सकता है, लेकिन आपको मैट्रिक्स को उन वर्णों के अनुक्रम पर विचार करना चाहिए जिन्हें परिवर्तित नहीं किया जा सकता है (जिसमें न्यूलाइन शामिल हैं)।

स्पष्ट करने के लिए: मान लें कि आपका कार्य / कार्यक्रम कहा जाता है fऔर मैट्रिक्स है:

1 -2
3  5
6  7

तब आप मैट्रिक्स को इस तरह फ़ंक्शन तर्क के रूप में दे सकते हैं (और असीम रूप से कई अन्य विकल्प):

f(1 -2
3  5
6  7)

f([1 -2
3  5
6  7])

f("""1 -2
3  5
6  7""")

यदि आपकी भाषा किसी भी तरह से कॉपी / पेस्ट की गई मैट्रिक्स को इनपुट के रूप में नहीं ले सकती है, तो मुझे डर है कि आपको दूसरी भाषा चुननी होगी।


आउटपुट स्वरूप:

आपको निम्न तीन प्रारूपों पर मैट्रिक्स का उत्पादन करना चाहिए (ऑर्डर मायने नहीं रखता):

[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
  • आप चाहें तो तीन आउटपुट अलग कर सकते हैं (उदाहरण के लिए एक नई पंक्ति)
  • आपको इनपुट के रूप में एक ही परिशुद्धता का उपयोग करके संख्याओं को आउटपुट करना होगा (उदाहरण के लिए, आपको दशमलव की संख्या को ट्रिम नहीं करना चाहिए, और न ही आउटपुट पूर्णांक को फ़्लोट के रूप में)।
  • रिक्त स्थान अनिवार्य हैं
  • आपको -नकारात्मक संख्याओं के लिए उपयोग करना चाहिए , न कि _समान।

परीक्षण के मामलों:

16    2    3   13
 5   11   10    8
 9    7    6   12
 4   14   15    1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]

0.14778   0.27114   0.24415
0.45997   0.12287   0.67470
0.28945   0.37928   0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]

-0.0398301   0.2403455  -0.2253368   0.3565870   0.0605803   0.0830780
-0.3254422  -0.1185191  -0.2989537   0.1647319   0.3621135   0.2018815
-0.0022281  -0.3362287  -0.3568447   0.4419063   0.3801872  -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]

0       4       1       0
0       0      -6       0
0       1       4      -3
2       0       0       8
0       0       0       0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]

1
----
[1]     (or [[1]])
{1}     (or {{1}})
[1]     (or 1)

1 2
----
[1, 2]  (or [[1, 2]])
{1, 2}  (or {{1, 2}})
[1, 2]

4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]

मैं से पूरी तरह वाकिफ हूँ इस है, लेकिन इस चुनौती में, बोझिल आई / ओ प्रारूप पूरे बिंदु है। चुनौती सभी कुछ भाषाओं में आउटपुट स्वरूपण के बारे में होगी, जबकि इनपुट पढ़ना अन्य भाषाओं में सबसे कठिन हिस्सा होगा।

कृपया इसे निराश न करें यदि इनपुट पढ़ना कठिन है, तो उन सबमिशन सबसे दिलचस्प हो सकते हैं। शॉर्ट जरूरी प्रभावशाली के रूप में ही नहीं है। और हमेशा की तरह, स्पष्टीकरण को प्रोत्साहित किया जाता है!

जवाबों:


7

रेटिना , 52 बाइट्स

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

^ *
[
$
]
\s+
, 
m):`.+
[$&]
*T`[]`{}
], .
; 
^.|]$

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

स्पष्टीकरण मेरे पर्ल जवाब पर पाया जा सकता है। अंतर हैं:

*
[
$
]

s/^ *(.+)/[$1]/gmदोनों के बजाय अग्रणी स्थान को हटा दें और लाइनों के चारों ओर कोष्ठक जोड़ें।

^.|]$

तीसरे आउटपुट के लिए अग्रणी और अनुगामी कोष्ठक निकालना।


6

रेटिना , 57 54 बाइट्स

बाइट गिनती आईएसओ 8859-1 एन्कोडिंग मानती है।

m`^ +

¶
] [
 +
, 
:`.+
[[$&]]
*T`[]`{}
], .
; 
^.|]$

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

TIO लिंक वर्तमान में तीन प्रारूपों के बीच कोई लाइनफीड नहीं छापता है, लेकिन ऐसा इसलिए है क्योंकि यह एक अस्थिर प्रतिबद्ध का उपयोग करता है। कार्यक्रम रेटिना 0.8.2 में इंटरमीडिएट लाइनफीड को प्रिंट करता है।

व्याख्या

m`^ +

प्रत्येक पंक्ति पर अग्रणी रिक्त स्थान से छुटकारा पाएं।

¶
] [

के साथ लाइनफ़ीड बदलें ] [

 +
, 

रिक्त स्थान के सभी रनों को एक अल्पविराम और एक स्थान से बदलें।

:`.+
[[$&]]

उस पूरी चीज़ को लपेटें [[...]]जिसमें पहला प्रारूप पूरा हो। परिणाम प्रिंट करें।

*T`[]`{}

कोष्ठक को ब्रेसिज़ से बदलें और वास्तव में कार्यशील स्ट्रिंग को बदलने के बिना परिणाम प्रिंट करें (यानी यह मुद्रित होने के बाद पहला प्रारूप पुनर्स्थापित किया जाता है)।

], .
; 

], [एक अर्धविराम और एक लाइनफीड के साथ बदलें ।

^.|]$

पहला [और आखिरी निकालें ]। यह तीसरा प्रारूप पूरा करता है।


5

स्काला, 183 181 149 बाइट्स

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

नया संस्करण, Stringप्रतिस्थापन और रीजेक्स का उपयोग कर :

(x:String)=>{val d=x.replaceAll("\n *","; ").replaceAll("(?<!;) +",", ");(s"[[${d.replace("; ","], [")}]]",s"{{${d.replace("; ","}, {")}}}",s"[$d]")}

नए संस्करण में वही शब्दार्थ और उपयोग है जो पुराने संस्करण का उपयोग कर रहे हैं split, mapऔर mkString

पुराना संस्करण, उपयोग करना split, mapऔर mkString:

संपादित करें: रिक्त स्थान के लिए निरर्थक चरित्र वर्ग

(x:String)=>{val d=x.split("\n").map(_.trim.split(" +").mkString(", "));(d.map(x=>s"[$x]").mkString("[",", ","]"),d.map(x=>s"{$x}").mkString("{",", ","}"),d.mkString("[","; ","]"))}

लैम्ब्डा। REPL में निष्पादित करें। इनपुट को ट्रिपल-कोटा Stringपैरामीटर के रूप में स्वीकार करता है , आउटपुट को आवश्यक आउटपुट के 3-टपल के रूप में देता है। आरईपीएल कोमा द्वारा अलग किए गए टुपल्स को प्रस्तुत करता है, जो कोष्ठक द्वारा सीमाबद्ध हैं।

स्पष्टीकरण:

नया संस्करण:

लाइनों पर अग्रणी रिक्त स्थान को संभालने के लिए पेचीदा तलाश के अलावा, अन्य रेगेक्स-आधारित उत्तर के रूप में अधिकतर एक ही तर्क।

पुराना संस्करण:

हमने इनपुट मैट्रिक्स प्रतिनिधित्व को 2 डी Stringसरणी में विभाजित किया है , फिर तत्वों को अलग करके आंतरिक सरणियों को ध्वस्त करके इसे 1 डी सरणी में मैप करें ,। अंत में, हम केवल आवश्यक न्यूलाइन सेपरेटर और सीमा मार्कर (उपसर्ग और प्रत्यय) का उपयोग करके 1D सरणियों को ध्वस्त करके विभिन्न आउटपुट बनाते हैं। यह सब split(पढ़ना), map(बदलना) और mkString(ढहना) के माध्यम से लागू किया गया है ।

उदाहरण REPL सत्र:

scala> val r=(x:String)=>{val d=x.split("\n").map(_.trim.split(" +").mkString(", "));(d.map(x=>s"[$x]").mkString("[",", ","]"),d.map(x=>s"{$x}").mkString("{",", ","}"),d.mkString("[","; ","]"))}

scala> r("""16    2    3   13
     |  5   11   10    8
     |  9    7    6   12
     |  4   14   15    1""")
res12: (String, String, String) = ([[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]],{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}},[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1])

कुछ तत्व एज मामलों के लिए, यह वांछित आउटपुट प्रदान करता है।


2
अन्य स्काला उत्तर की तुलना में बेहतर, अच्छी तरह से किया गया!
श्री Xcoder

4

Japt , 63 53 बाइट्स

यह 44 बाइट्स में आ रहा था इससे पहले कि मैंने देखा कि आउटपुट में रिक्ति अनिवार्य थी।

·®¸f
"[[{q"],["}]]
\{\{{q"},\{"}}}
[{q';}]"r",|;"_+S

झसे आज़माओ


व्याख्या

          :Implicit input of string U
·         :Split to an array on newlines.
®         :Map over the array.
¸         :Split each element to an array on spaces.
f         :Filter to remove empty elements from the subarrays.
"[[       :Start building the output string. In Japt strings, anything enclosed in {}s will be evaluated before being added to the string.
{q"],["}  :Join the array to a string using ],[ The sub-arrays will be cast to comma separated strings in the process.
]]        :That's the first line done.
\{\{      :The start of the second line. A few bytes have to be sacrificed to esapce the {s
{q"},\{"} :Join the array to a string using },{
}}        :That's the second line done.
[         :And on to the last line.
{q';}     :This time we join the array with a semi-colon.
]"        :And that's the string completed.
r         :Except we still need to replace...
",|;"     :  All occurrences of a comma or a semi-colon with...
_+S       :  Itself and a space.
          :Implicit output of resulting string.

बहुत बढ़िया। सबसे अच्छा मैं कर सकता था 60 बाइट्स के आसपास कहीं ...
ETHproductions

3

पर्ल ५ , 71 बाइट्स

कोड + -p0झंडे के 69 बाइट्स ।

s/^ *(.+)/[$1]/gm;s/\s+/, /g;$_="[$_]
{".y/[]/{}/r."}
".s/], \[/; /gr

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

स्पष्टीकरण

s/^ *(.+)/[$1]/gm;[]प्रमुख स्थानों को हटाते समय प्रत्येक पंक्ति के चारों ओर जोड़ता है ।
s/\s+/, /g;जगह के रन और नईलाइन्स को कॉमा और स्पेस से बदल देता है।
पहले आउटपुट को ब्रेसिज़ के साथ आसपास के द्वारा प्राप्त किया जाता है [$_]:।
दूसरी को ब्रेसिज़ को घुंघराले ब्रैकेट ( y/[]/{}/r) के साथ और घुंघराले ब्रैकेट के साथ बदलने की आवश्यकता है "{" ... "}"
तीसरे के लिए, ], [एक अर्धविराम और एक स्थान ( s/], \[/; /gr) के साथ प्रतिस्थापित किया जाता है ।


इस समाधान को लिखने के बाद, मैंने मार्टिन एंडर के रेटिना उत्तर को स्वीकार करने की कोशिश की, लेकिन यह 10 बाइट्स से अधिक समय तक समाप्त हो गया ( TryItOnline ):

s/^ +//gm;s/
/] [/g;s/ +/, /g;$_="[[$_]]
{{".y/[]/{}/r."}}
[".s/], \[/; /gr."]"

इस संस्करण के लिए, स्पष्टीकरण के लिए मार्टिन का उत्तर देखें ।


3

MATL , 60 बाइट्स

`jtU&D32', 'XHYXw]xXhH&Zc91wh93htD[]&D{}&DXED&GxvUH&4$'; 'TD

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

चैट में एक मास्टरक्लास में मेरे बाईटेकाउंट के एक चौथाई हिस्से को शेविंग करने के लिए लुइस मेंडो को बहुत धन्यवाद।

इनपुट को चिपकाएँ, उसके बाद एक खाली लाइन।

% Act I: Taking input.

`jt             w]    % Take input line by line until an empty line is encountered.
   U                  % Convert string input to numerical row array
    &D                % Convert back to string, adding brackets and single spaces
      32', 'XHYX      % Add commas before the spaces. Store ',  ' in clipboard H.


% Act II: Nested square brackets

x                     % Discard the tab character
 Xh                   % Concatenate all strings as cell array.
   H&Zc               % Join all the strings together, using clipboard H as a separator
       91wh93h        % Wrap in square brackets (ASCII 91 and 93)
              tD      % Display a copy of the result.

% Act III: Nested curly brackets

[]&D{}&D              % Convert empty array and cell array to string.
        XE            % Use to substitute square for curly brackets.

% Act IV: MATLAB-style input.

&Gxv                  % Get all the input again, discard the tab, and concatenate vertically.
    U                 % Convert to numerical 
     &4$     TD       % Convert to string, using row- and column separators
        H'; '         % Namely, clipboard H and a semicolon.

2

05AB1E ,  45  44 बाइट्स

|„  ð:ðδÛ˜ð¡„, ý''KD…[ÿ]=„[]„{}‡,"], ["„; :=

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

पहला आउटपुट

|                           # push a list of the inputs
 „  ð:                      # replace any instance of 2 spaces with 1 space
      ðδÛ                   # remove any leading spaces
         ˜                  # flatten to a 1D list
          ð¡                # split on spaces
            „, ý            # merge on ", "
                ''K         # remove all single quotes
                   D        # duplicate for use in output 3
                    …[ÿ]    # interpolate between square brackets
                        =   # print without popping 

दूसरा आउटपुट

„[]„{}‡,                    # translate square brackets to curly brackets and print

तीसरा आउटपुट

                            # the copy from the first output is used here
 "], ["„; :                 # replace "], [" with "; "
           =                # print


2

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

-15 बाइट्स @ शुगी और @ जस्टिन को धन्यवाद

m=>`[[${(a=m.split`
`.map(x=>x.match(/\S+/g).join`, `)).join`], [`}]]
{{${a.join`}, {`}}}
[${a.join`; `}]`

उदाहरण कोड स्निपेट:

f=
m=>`[[${(a=m.split`
`.map(x=>x.match(/\S+/g).join`, `)).join`], [`}]]
{{${a.join`}, {`}}}
[${a.join`; `}]`
console.log(f(
`1 -2
 3  5
 6  7`
))


बदलकर 4 बाइट सहेजें map(x=>x.trim().replace(/ +/g,", "))करने के लिए map(x=>x.match(/\S+/g).join`, `)
जस्टिन मेरिनर

1

पायथन 2 , 163 152 150 145 बाइट्स

-5 बाइट्स फेलिप नार्डी बतिस्ता के लिए धन्यवाद, जिन्होंने छप का उपयोग करने का सुझाव दिया (क्षमा करें, मुझे बस उस शब्द को कहने के लिए एक बहाना चाहिए: पी)।

import re
a=str.replace
def f(s):r=a(`[re.findall('[\.\d]+',i)for i in s.split('\n')]`,"'",'');print r,a(a(r,*']}'),*'[{'),a(r[1:-1],'], [','; ')

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


आह, छप ... धन्यवाद!
पूरी तरह से

1

पायथन 3 , 184 178 174 173 169 163 * 157 * 153 बाइट्स

इनपुट / आउटपुट प्रारूप: इस फ़ंक्शन कॉल के साथ मैट्रिसेस और इनपुट के बीच के स्थान के साथ आउटपुट (जैसा कि TIO पर दिखाया गया है):

g("""<paste matrix here>""")

यह समारोह है:

def g(s,r=str.replace):a=str([[[int,float]['.'in y](y)for y in x.split()]for x in s.split('\n')]);print(a,r(r(a,*'[{'),*']}'),'['+r(a,'], [','; ')[2:-1])

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


* @Officialaimm (169 से 163 बाइट तक) के लिए 6 बाइट्स का धन्यवाद।

* 4 बाइट्स @FelipeNardiBatista की बदौलत सहेजे गए।


आगे गोल्फिंग के बाद आने के लिए स्पष्टीकरण।


1

सी, 415 बाइट्स

#import<stdio.h>
#define A(a,c,o)for(l=strlen(a)-o,k=0;c[k];)a[l+k]=c[k++];
j,k,l;main(i){char s[999],a[999]="[",b[999]="{",c[999]="[",t[]=" ";for(;fgets(s,999,stdin);){A(b,"{",0)A(a,"[",0)for(i=0;s[i];++i){j=0;for(;s[i]-32&&s[i]-10&&s[i];++i){j=1;t[0]=s[i];A(c,t,0)A(b,t,0)A(a,t,0)}if(j){A(c,", ",0)A(b,", ",0)A(a,", ",0)}}A(c,"; ",2)A(b,"}, ",2)A(a,"], ",2)}A(c,"]",2)A(b,"}",2)A(a,"]",2)puts(a);puts(b);puts(c);}

यह एक राक्षस है और बहुत लंबा है, लेकिन मैं इसके साथ काम कर रहा हूं। शायद एक अलग दृष्टिकोण के लिए जाना चाहिए था।

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

दूसरा परीक्षण मामला | तीसरा टेस्ट केस | चौथा टेस्ट केस | पांचवां टेस्ट केस | छठा टेस्ट केस | सातवां टेस्ट केस


1

जेली , 37 बाइट्स

j€⁾, j⁾; ⁾[]j
ỴḲLÐf$€VµŒṘṄ“[]“{}”yṄȧÇ

एक पूर्ण कार्यक्रम तीन लाइनों पर तीन स्वरूपों को मुद्रित करता है।

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

कैसे?

j€⁾, j⁾; ⁾[]j - Link 1, create the 3rd format (semicolon-style): list of lists
  ⁾,          - literal [',', ' ']
j€            - join for €ach (place ", " between the elements of each row)
      ⁾;      - literal [';', ' ']
     j        - join (place "; " between the rows)
         ⁾[]  - literal ['[', ']']
            j - join (surround the whole result with a pair of brackets)

ỴḲLÐf$€VµŒṘṄ“[]“{}”yṄȧÇ - Main link: list of characters
Ỵ                       - split at newlines
     $€                 - last two links as a monad for €ach row:
 Ḳ                      -   split at spaces
   Ðf                   -   filter keep those for which the following is truthy:
  L                     -     length (this removes all the empty lists "between" spaces)
       V                - evaluate as jelly code (yields a list of lists of numbers)
        µ               - monadic chain separation, call that x
         ŒṘ             - get a Python string representation of x
           Ṅ            - print that (the 1st format) plus a newline, and yield it
            “[]“{}”     - literal [['[', ']'],['{', '}']]
                   y    - translate (converts all '[' to '{' and all ']' to '}')
                    Ṅ   - print that (the 2nd format) plus a newline, and yield it
                      Ç - call the last link as a monad with argument x
                     ȧ  - logical and
                        - implicit print of the result (the 3rd format)

1

वी , 41 बाइट्स

òJé;òÓ¨ä©ó«/±, 
yss]Y.pkÓ; /], [
Ùòcs]}f[

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

व्याख्या

òJé;ò            Join all lines with `; ` (trailing single space)
     Ó¨ä©ó«/±,   :s/\v(\d)\s+/\1, /g
yss]             Surround everything with brackets (completes [x,x;x,x])
Y.pk             (Y)ank, surround with brackets again, (p)aste.  Adds [[x,x;x,x]]
    Ó; /], [     :s/; /[, ]/g (transforms to [[x,x], [x,x]])
Ù                Duplicate this line
 ò               recursively
  cs]}           (c)hange (s)urrounding [] with {}
      f[         go to the next [ until there are none

1

आर , 132 बाइट्स

function(x,p=paste0,g=gsub)cat(z<-p('[[',g('\n','], [',y<-g('[:blank:]',', ',x)),']]'),chartr('[]','{}',z),p('[',g('
','; ',y),']'))

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

एक अनाम फ़ंक्शन। जैसे इनपुट लेता है

f('1 -2
3 5
6 7')

यह उन्हें परीक्षण मामलों के समान क्रम में प्रिंट करता है, लेकिन विभाजक के रूप में रिक्त स्थान के साथ।

स्पष्टीकरण:

यह पहली बार के साथ रिक्त स्थान स्वैप ,करता है और परिणाम को बचाता है y। फिर यह नए सिरे से स्वैप करता है ], [, डालता है [[और ]]दोनों छोर पर होता है, और उसी के परिणाम को बचाता हैz

इसके बाद, chartrस्विच [के साथ {और ]साथ }में z

अंत में, यह लेता है y, नए सिरे से स्वैप करता है ;और डालता है [और ]दोनों छोर पर।

फिर सभी परिणाम उस क्रम में पारित किए जाते हैं cat, जिसमें उन्हें प्रिंट करता है, सभी अच्छी तरह से स्वरूपित होते हैं, और एक ही स्थान से अलग हो जाते हैं।

सौम्य:

function(x)
  cat(
    z<-paste0('[[',gsub('\n','], [',y<-gsub('[:blank:]',', ',x)),']]'),
    chartr('[]','{}',z),
    paste0('[',gsub('\n','; ',y),']'))

1

जावा 8 नेटबीन्स के साथ 8+, 209 बाइट्स

गणना कोड से 208 है, साथ ही इसे दबाकर चलाने के लिए 1 बाइट्स F6

बोझिल चुनौती के लिए बोझिल जवाब: पी

interface M{static void main(String[]a){String s="";s=s.trim().replaceAll(" +",", ").replaceAll("\n(, )?","; ");System.out.println("["+s+"]\n[["+s.replace("; ","], [")+"]]\n{{"+s.replace("; ","}, {")+"}}");}}

कैसे इस्तेमाल करे?

नेटबीन्स के भीतर, इस कोड को एक फ़ाइल में पेस्ट करें जिसे कहा जाता है M.java। फिर उस मैट्रिक्स को कॉपी करें जिसका आप उपयोग करना चाहते हैं। फिर दो लगातार पात्रों के बीच "", चुनौती से आवश्यकतानुसार ctrl+ दबाएं v

अब दबाओ F6! यह कोड संकलित करेगा, इसे चलाएगा और अपेक्षित मैट्रिक्स अभ्यावेदन का उत्पादन करेगा।


क्या यह तीनों आउटपुट स्वरूपों में होने की आवश्यकता नहीं है?
ग्यूसेप

1
वहाँ! यही तो याद किया! : डी फिक्सिंग कि अब।
ओलिवियर ग्राएगोइरे

2
@StewieGriffin यह ऐसी दुविधा वाली भाषा है जो डिफ़ॉल्ट रूप से STDIN का उपयोग करती हैं या जो कि newlines के बारे में परवाह नहीं करती हैं, मैं यह भी कह सकता हूं कि किसी भी प्रमुख Java IDE में "कॉपी / पेस्ट करना" स्वचालित रूप से दृश्य में कॉपी / पेस्ट की गई newlines को बदल देता है \n, जिससे परिणाम बनता है। तुमने क्या देखा। इसलिए मैं इसे पूरी तरह से नहीं जानता, फ्रैंक होने के लिए: एस
ओलिवियर ग्रेजायर

@ ओलिविएरग्रेयर मैं पूरी तरह से जानता हूं कि यह कुछ भाषाओं को फायदा पहुंचा रहा है, विशेष रूप से वे जो बिना किसी विशेष प्रसंस्करण के प्रारूप को संभाल सकते हैं। मैं भी स्पष्ट रूप से चुनौती पाठ में इसका उल्लेख करता हूं। याद रखें कि आप जेली, जावास्क्रिप्ट या पायथन के खिलाफ प्रतिस्पर्धा नहीं कर रहे हैं, आप जावा का उपयोग कर रहे हैं। इसकी बहुत अलग कार्यक्षमता है, और दूसरों की तुलना में काफी नहीं हो सकती है। मैं हमेशा बोझिल I / O प्रारूपों से बचने के नियमों का पालन करता हूं जो कुछ भाषाओं को अनुचित लाभ दे सकते हैं, लेकिन इस विशेष चुनौती में, इनपुट को पार्स करना इसका एक बड़ा हिस्सा है।
स्टीवी ग्रिफिन

1

गणितज्ञ, 129 बाइट्स

s=StringSplit
r=StringReplace
Print[#,n,#~r~{"{"->"[","}"->"]"},n,#~r~{"{{"->"[","}}"->"]","}, {"->"; "}]&@ToString@s@s[#,n="
"]&

तीसरी और चौथी पंक्ति मिलकर शुद्ध फ़ंक्शन को एक स्ट्रिंग इनपुट के रूप में परिभाषित करते हैं; उदाहरण के लिए, यदि हम सेट करते हैं f=Print...&, तो अंतिम परीक्षण मामले को इस प्रकार कहा जाएगा:

f@"4
5"

स्निपेट

ToString@s@s[#,n="
"]

एक तार के रूप में इनपुट स्ट्रिंग को पार्स करता है (स्ट्रिंग्स का - हम कभी भी प्रविष्टियों को संख्यात्मक मात्रा के रूप में व्याख्या करने की कोशिश नहीं करते हैं) और परिणामी अभिव्यक्ति को वापस स्ट्रिंग में परिवर्तित करते हैं; यह स्वचालित रूप से घुंघराले ब्रेसिज़ के साथ आउटपुट स्वरूप उत्पन्न करता है। फिर Print[#,n,#~r~{"{"->"[","}"->"]"},n,#~r~{"{{"->"[","}}"->"]","}, {"->"; "}]उस आउटपुट प्रारूप और दो अन्य को प्रिंट करता है, जो सीधे सुस्पष्ट स्ट्रिंग प्रतिस्थापन नियमों का उपयोग करके, नई सुचनाओं द्वारा अलग किया जाता है।


1

पिप , 49 46 बाइट्स

-rध्वज के लिए कोड के 45 बाइट, +1 ।

g|>:sYP(RPg^w)R';kPyR'['{R']'}O'[OgRwkJ"; "']

स्टड से इनपुट लेता है। इसे ऑनलाइन आज़माएं!

व्याख्या

                 Preset variables used: s is " ", w is regex `\s+`, k is ", "
g                With -r flag, g is a list of lines from stdin
 |>:s            Left-strip spaces from (elements of) g and assign back to g

YP(RPg^w)R';k
     g^w         Split (elements of) g on runs of whitespace
   RP            Apply Pip's built-in repr, which wraps lists in [] and separates items
                   with ; (e.g. [[1;2];[3;4]])
  (     )R';k    Replace the semicolons with ", " to obtain format #1
YP               Print and yank into y variable

PyR'['{R']'}
 yR'['{          In y, replace [ with {
       R']'}     and ] with }
P                and print (format #2)

O'[OgRwkJ"; "']
O'[              Output [ with no newline
   O             Output with no newline:
    g              Take g (list of lines of stdin, with leading spaces stripped)
     Rwk           Replace runs of whitespace with ", "
        J"; "      and join lines on "; "
             ']  Print the final ] to complete format #3

(यह स्पष्टीकरण प्रारूप मेरे लिए थोड़ा जटिल लगता है, इसलिए मुझे बताएं कि क्या कुछ भी समझ में नहीं आया।)


1

SCALA, 590 बाइट्स

कठिन था, लेकिन मुझे लगता है कि मैं इसके साथ कर रहा हूं

var o=s.replaceAll("  *"," ").replaceAll("\n ","\n")
var z=o.split("\n")
var h=z.length
var k=new Array[Array[String]](h)
for(i<-0 to h-1)k(i)=z(i).split(" ")
var u=k.length-1
print("{")
for(i<-0 to u){print("{")
for(j<-0 to k(i).length-2)print(k(i)(j)+", ")
print(k(i).last)
print("}")}
print("}[")
for(i<-0 to u){print("[")
for(j<-0 to k(i).length-2)print(k(i)(j)+", ")
print(k(i).last)
print("]")}
print("][")
for(i<-0 to u-1){for(j<-0 to k(i).length-2)print(k(i)(j)+", ")
print(k(i).last)
print("; ")}
for(j<-0 to k(k.length-1).length-2)print(k(u)(j)+", ")
print(k.last.last)
print("]")

त्वरित स्पष्टीकरण: मैं ट्रिपल उद्धरणों से घिरा इनपुट लेता हूं, फिर अप्राप्य रिक्त स्थान को हटा देता हूं; स्ट्रिंग को दो बार विभाजित करें (एक बार लाइनों के लिए और एक बार कॉलम के लिए); और मैं अपनी तीन दिनचर्या के साथ प्रिंट करता हूं। यह संभव हो सकता है कि किसी फ़ंक्शन को म्यूट करने के लिए परिभाषित किया जाए, लेकिन मुझे नहीं पता कि कैसे।

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


2
यह भयानक है। मुझे अब एक स्काला उत्तर पोस्ट करना होगा।
तमोग्ना चौधरी

हालांकि प्रयास के लिए एक उत्थान है।
तमोग्ना चौधरी १६

1
आप Scala के साथ क्या संभव हो सकता है यह देखने के लिए codegolf.stackexchange.com/a/129356/48620 पर एक नज़र रखना चाहते हैं। इसका उपयोग ऐसे करें जैसे कि पूर्व 1.5 का उपयोग करेगा जावा केवल हिमशैल के सिरे को खरोंच रहा है।
तमोग्ना चौधरी

2
इसके अलावा, आपका आउटपुट गलत है, जो मुझे मेरे उत्थान को वापस लेना चाहता है - आउटपुट स्वरूप द्वारा तय किए गए अनुसार कोष्ठक के बीच कोई अल्पविराम नहीं हैं।
तमोग्ना चौधरी


0

05AB1E , 34 बाइट्स

|εð¡õK}€ï"ÿ"Є[]„{}‡s¦¨"], ["„; :»

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

ε...}vy...})टीआईओ के साथ बदल दिया गया है क्योंकि इसे अभी तक वहां नहीं लाया गया है।


@JonathanAllan धन्यवाद, तय किया गया है।
निकोल आउटफर गोल्फ

कूल, अब इसे बस एक स्पष्टीकरण की आवश्यकता है कि यह कैसे काम करता है :)
जोनाथन एलन

1
@JonathanAllan क्षमा करें, आपके पास समय नहीं है ...
आउटगॉल्फ

0

सी # (.NET कोर) , 214 बाइट्स

(s)=>{var result=Regex.Replace("[["+Regex.Replace(s.Replace("\n","], [")," +(\\d)",", $0")+"]","  +"," ").Replace("[, ","[");return$"{result}]\n{result.Replace('[','{').Replace(']','}')}}}\n[{result.Replace("[","").Replace("],",";")}";};

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

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


इस उत्तर के बाद से, मैं और अधिक निश्चित हो गया हूं कि बेस सिस्टम के अलावा अन्य पुस्तकालयों के लिए स्टेटमेंट का उपयोग बायटेकाउंट में शामिल किया जाना चाहिए। मैं इसे अभी के लिए अपने वर्तमान स्वरूप में छोड़ दूंगा, लेकिन स्टेटमेंट using System.Text.RegularExpressionsको 37 अतिरिक्त बाइट्स जोड़कर (मेरी गिनती से) आवश्यक है।
कामिल द्रकरी

0

चारकोल , 38 बाइट्स

≔E⪪θ¶⪫Φ⪪ι λ, θE⪪[]{}²⪫ι⪫Eθ⪫ιλ, ⪫[]⪫θ; 

इसे ऑनलाइन आज़माएं! नोट: अनुगामी स्थान। लिंक कोड के वर्बोज़ संस्करण के लिए है। चारकोल एक बहुस्तरीय इनपुट विकल्प का उपयोग करके सीमांकित है ["""और """]। स्पष्टीकरण:

   θ                Input string
  ⪪ ¶               Split on newlines
 E                  Map over each line
        ι           Current line
       ⪪            Split on spaces
      Φ   λ         Filter out empty strings
     ⪫     ,        Join with `, `
≔            θ      Assign resulting array to variable

यह इनपुट लेता है और इसे लाइनों में विभाजित करके और विभाजकों को सामान्य करके इसे तैयार करता है।

 ⪪[]{}²             Split `[]{}` into substrings of length 2
E                   Map over the substrings
          Eθ        Map over array from above
            ⪫ιλ     Wrap each element with the substring
         ⪫     ,    Join elements with `, `
       ⪫ι           Wrap with the substring
                    Implicitly print each result on a separate line

यह [[ ... ], [ ... ]]और {{ ... }, { ... }}मामलों को संभालता है ।

    θ               Array from above
   ⪫ ;              Join elements with `; `
⪫[]                 Wrap result with `[]`
                    Implicitly print

यह [ ... ; ... ]मामला संभालता है ।

इससे पहले कि मैं उपरोक्त समाधान को बाइट करता, मेरे पास दो 39-बाइट समाधान होते थे; यह अन्य है:

⮌E⪪[]{}[]²⪫ι⪫EE⪪θ¶⪫Φ⪪λ ν, ⎇κ⪫ιλλ⁺§;,,κ 

इसे ऑनलाइन आज़माएं! नोट: अनुगामी स्थान। लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

  ⪪[]{}[]²                              Split `[]{}[]` into substrings of length 2
 E                                      Map over the substrings
                θ                       Input string
               ⪪ ¶                      Split on newlines
              E                         Map over each line
                     λ                  Current line
                    ⪪                   Split on spaces
                   Φ   ν                Filter out empty strings
                  ⪫     ,               Join with `, `
             E                          Map over each line
                          ⎇κ   λ        If outer index is zero, just use the line
                            ⪫ιλ         Otherwise wrap the line in the substring
            ⪫                   ⁺§;,,κ  Join with `; ` or `, ` per outer index
          ⪫ι                            Wrap in the substring
⮌                                       Reverse the order of the results
                                        Implicitly print each result on a separate line
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.