टेबल पढ़ें


11

कार्य

निर्देशांक का एक सेट दी गई तालिका की सामग्री पढ़ें।

तालिका स्वरूपण

टेबल्स इस मूल प्रारूप में होंगे:

      |[name]|[name]|
---------------------
[name]| [val]|[val] |
[name]| [val]|[val] |

कॉलम के भीतर कॉलम नाम हमेशा अद्वितीय होते हैं । पंक्ति के भीतर पंक्ति नाम भी अद्वितीय हैं । इसमें व्हॉट्सएप को छोड़कर ऐसे नाम शामिल हैं। मान, कॉल नाम और पंक्ति नाम |-उनके अंदर कभी नहीं होंगे । नामों और मूल्यों के अंदर कभी स्थान नहीं होगा, लेकिन अग्रणी या अनुगामी स्थान हो सकता है। शीर्ष लेख / सामग्री के आधार पर कर्नल की चौड़ाई समायोज्य है। कॉलम की चौड़ाई हमेशा ऊपर से नीचे तक सुसंगत होती है।

इनपुट

एक तालिका और एक स्थान की अलग सूची [name]

उदाहरण

[table]
row col

यदि आप एक फ़ंक्शन लिख रहे हैं, तो ये अलग-अलग तार हो सकते हैं, अन्यथा row colहमेशा इनपुट में अंतिम पंक्ति होगी। row colप्रारूप के लिए कुछ लचीलापन है और कई तरीकों का प्रतिनिधित्व किया जा सकता है। (जैसे (row, col),r, c ...)। एकमात्र कठिन आवश्यकता यह है कि यह एक पंक्ति हो, और यह आदेश में दिखाई दे col row

उत्पादन

सेल से कोई अग्रणी या अनुगामी स्थान के साथ इनपुट द्वारा निर्दिष्ट सेल की सामग्री

उदाहरण

In:
   |a|z |_*|
------------
atb|1|85|22|
b  |5|6 |e$|
/+*|8|we|th|
atb a

Out:
1


In:
  | x| b |
----------
ab|l |mmm|
b |le| l |
b b

Out:
l

In:
   |a|z |_*|  ab  |
-------------------
atb|1|85|22| 5    |
b  |5|6 |e$|  8   |
/+-|8|we|th| 126  |
atb ab

Out:
5

क्या इनपुट में मांगी गई सेल हमेशा टेबल में मौजूद रहेगी?
ETHproductions

ओह, अब मैं समझ गया;) हाँ, यह होगा
जे एटकिन

ऐसा लगता है कि इनपुट को एक स्ट्रिंग के रूप में दिया जाएगा, हालांकि आपने इसे स्पष्ट नहीं किया है। इनपुट प्रारूप पर कितना लचीलापन है? मानों की एक सरणी किसी फ़ंक्शन के लिए स्वीकार्य है? (मैं अनुमान लगा रहा हूं कि नहीं, इसे एक तार होना चाहिए) क्या पंक्ति / कर्नल को टेबल पर अलग-अलग तर्क दिए जा सकते हैं? (मैं शायद अनुमान लगा रहा हूं।) कृपया स्पष्ट करें।
लेवल रिवर सेंट

क्या उससे मदद हुई?
J Atkin

स्तंभ ऊपर / नीचे नहीं जाते हैं और पंक्तियाँ बाएँ / दाएँ जाती हैं? मेरा मानना ​​है कि आपके उदाहरणों में निर्देशांक उलट हैं।
कोरियाईवॉलेजेस

जवाबों:


2

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

s`^(?=.*\n(.*) (.*))((?<a>\|)|.)*\|\s*\2\s*\|.*\n\1\s*((?<-a>\|)|[^|])*\|\s*([^\s|]*).*
$5

मेरा पहला बैलेंसिंग ग्रुप regex। यह अभी भी अच्छी तरह से गोल्फ होना चाहिए। बाद में करने की कोशिश करेंगे।

मुख्य विचार स्तंभ नाम तक पाइप की गिनती कर रहा है और फिर पंक्ति में समान मात्रा में पाइप का उपयोग करके वांछित पंक्ति के नाम से शुरू कर रहा है। उसके बाद हम अगले मूल्य पर कब्जा करते हैं जो परिणाम है।

इसे यहाँ ऑनलाइन आज़माएँ।


5

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

t=>(S=s=>s.split(/ *\| */),t=t.split`
`,[y,x]=t.pop().split` `,S(t.find(r=>S(r)[0]==y))[S(t[0]).indexOf(x)])

फ़ायरफ़ॉक्स में परीक्षण

f=t=>(
 S=s=>s.split(/ *\| */),
 t=t.split`\n`,
 [y,x]=t.pop().split` `,
 S(t.find(r=>S(r)[0]==y))[S(t[0]).indexOf(x)]
)

function test(){
  r=f(T.value);
  O.textContent=r
}
test()
#T { width: 50%; height: 9em}
Input<br><textarea id=T>   |a|z |_*|  ab  |
-------------------
atb|1|85|22| 5    |
b  |5|6 |e$|  8   |
/+-|8|we|th| 126  |
atb ab</textarea><br>
<button onclick="test()">Find</button>
<span id=O></span>


अच्छा, BTW क्यों सिर्फ फ़ायरफ़ॉक्स में? (FWIW मैं फ़ायरफ़ॉक्स का उपयोग करता हूं)
जे एटकिन

पिछली बार जब मैंने जाँच की थी, तब भी क्रोम ने विनाशकारी असाइनमेंट को लागू नहीं किया था - पुष्टि की, इससे क्रोम में त्रुटि "असाइनमेंट में अवैध बाएं हाथ की ओर"
edc65

@Jtkin BTW एक अपवॉट क्यों नहीं?
edc65

मैंने ऊपर से नीचे तक पढ़ा, एक टिप्पणी छोड़ दी, कुछ और करना था, और भूल गया;)
जे एटकिन

4

हास्केल, 117 116 111 बाइट्स

import Data.Lists
s=splitOn"|".filter(>' ')
(t#b)a|l<-lines t=[c|r<-l,(d,c)<-zip(s$l!!0)$s r,d==a,s r!!0==b]!!0

उपयोग उदाहरण:

*Main> ("  | x| b |\n----------\nab|l |mmm|\nb |le| l |\nb b" # "b") "b"
"l"

यह काम किस प्रकार करता है:

s=splitOn"|".filter(>' ')         -- helper function to remove spaces and split a
                                  -- line at bars into words
l<-lines t                        -- split table at \n into lines and bind to l
[c|r<-l,                      ]   -- take c for every line r in l, where
       (d,c)<-zip(s$l!!0)$s r     -- a pair (d,c) is made by zipping the (split)
                                  -- header of the table with the (split) line r 
        ,d==a                     -- and d (=header element) equals parameter a
        ,s r!!0==b                -- and the first word in r equals parameter b
                             !!0  -- pick the first (and only) element
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.