টেবিল পড়ুন


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

ইনপুটটিতে অনুরোধ করা ঘরটি কি সর্বদা টেবিলে উপস্থিত থাকবে?
ইটিএইচ প্রডাকশনগুলি

ওহ, এখন আমি এটি পেয়েছি;) হ্যাঁ এটি হবে
জে আতকিন

দেখে মনে হচ্ছে ইনপুটটি একক স্ট্রিং হিসাবে দেওয়া হবে যদিও আপনি এটিকে স্পষ্ট করে না নি। ইনপুট ফর্ম্যাটে কতটা নমনীয়তা রয়েছে? একটি ফাংশনে মানগুলির অ্যারে পাস করা কি গ্রহণযোগ্য? (আমি অনুমান করছি না, এটি একটি স্ট্রিং হতে হবে) সারি / কর্নেলটি কী ছকে পৃথক যুক্তি হিসাবে দেওয়া যেতে পারে? (আমি সম্ভবত অনুমান করছি)) দয়া করে স্পষ্ট করে বলুন।
স্তর নদী সেন্ট

এটা কি সাহায্য করে?
জে আত্কিন

কলামগুলি উপরে / নিচে এবং সারিগুলি বাম / ডানদিকে যাবে না? আমি বিশ্বাস করি আপনার উদাহরণগুলির স্থানাঙ্কগুলি বিপরীত।
কোরিয়ানজগ্লাস 2

উত্তর:


2

রেটিনা, 90 বাইট

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

আমার প্রথম ব্যালেন্সিং গ্রুপ রেজেেক্স। এটি এখনও ভাল গল্ফযোগ্য হতে হবে। পরে এটি করার চেষ্টা করবে।

মূল ধারণাটি হ'ল কলামের নাম না হওয়া পর্যন্ত পাইপগুলি গণনা করা এবং তারপরে সারিবদ্ধভাবে একই পরিমাণে পাইপগুলি পছন্দসই সারির নাম দিয়ে শুরু করা। এর পরে আমরা পরবর্তী মানটি ক্যাপচার করি যা ফলাফল।

এটি এখানে অনলাইনে চেষ্টা করুন।


5

জাভাস্ক্রিপ্ট (ES6), 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>


ভাল, বিটিডাব্লু কেন শুধু ফায়ার ফক্সে? (এফডাব্লুআইডাব্লু আমি ফায়ারফক্স ব্যবহার করি)
জে আত্কিন

গতবার আমি যাচাই করেছিলাম, ক্রোম এখনও ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট প্রয়োগ করেনি - নিশ্চিত হয়েছে, এটি ক্রোমে "ত্রুটিযুক্ত অবৈধ বাম দিক" এ ত্রুটি দেয়
edc65

@ জেআটকিন বিটিডাব্লু?
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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.