তীর দ্বারা পুনর্গঠিত


11

বলি আমি কিছু লিখছিলাম এবং আমি ভুলবশত ভুল বাক্যে লিখেছিলাম:

+-------+--------+
| Verbs | Nouns  |
+-------+--------+
| Truck |        |
| eat   | Banana |
|       | Car    |
+-------+--------+

সুতরাং আমি, অলস হয়ে, কেবল স্থানটি হওয়া উচিত যেখানে এটি হওয়া উচিত:

+-------+--------+
| Verbs | Nouns  |
+-------+--------+
|[Truck]--->     |
| eat   | Banana |
|       | Car    |
+-------+--------+

আপনার কাজটি এটিকে সুন্দর দেখায় - এটিকে এটিতে পরিণত করুন:

+-------+--------+
| Verbs | Nouns  |
+-------+--------+
|       | Truck  |
| eat   | Banana |
|       | Car    |
+-------+--------+

বিধি

  • বাক্যাংশ বা শব্দগুলি বন্ধনী দ্বারা বেষ্টিত ([...])
  • মাল্টলাইন এন্ট্রিগুলি [...] (মাল্টলাইন সরানো), নিউলাইন, [...] --...--> হিসাবে চিহ্নিত করা হয়। সুতরাং তীরটি সর্বদা নীচের ডান বন্ধনী থেকে বেরিয়ে আসে

উদাহরণ স্বরূপ:

+-----------+----------+
|   Verbs   |  Nouns   |
+-----------+----------+
|           |          |
|[is a noun]->         |
| eat       | Banana   |
|           | Car      |
+-----------+----------+

এতে পরিণত হয়:

+-----------+----------+
|   Verbs   |  Nouns   |
+-----------+----------+
|           |          |
|           | is a noun|
| eat       | Banana   |
|           | Car      |
+-----------+----------+
  • বাক্সগুলি প্লাস ("+") দ্বারা আবদ্ধ হয় এবং এটি ধরে নেওয়া উচিত যে তীরগুলি একটি প্লাসের উপর দিয়ে যাবে না
  • শব্দ বা বাক্যাংশ ফিট করার জন্য সর্বদা একটি তীরের শেষে জায়গা থাকবে
  • অর্ডার সম্পর্কিত বিষয়গুলি - তীরটি যেখানে নির্দেশ করবে সেখানে শব্দটি অবশ্যই উপস্থিত হবে, যদিও উল্লম্ব সারিবদ্ধকরণ গুরুত্বপূর্ণ নয়
  • তীরগুলি একবারে 90 ডিগ্রি ঘুরতে পারে তবে কেবল "/" এবং "\" এর মধ্যে (নীচে দেখুন)

উদাহরণ স্বরূপ:

    +-----------+----------+
    |   Verbs   |  Nouns   |
    +-----------+----------+
    | [Truck]--\|          |
  /------------/|        <--\
  | | eat       | Banana   ||
  | |  /--\     | Car      ||
  | +--|--|-----+----------+|
  \----/  \-----------------/

প্রতিযোগিতা

যে কোনও ইনপুট গ্রহণযোগ্য (পাঠ্য ফাইল, STDIN, ইত্যাদি) যে
কোনও পাঠযোগ্য আউটপুট গ্রহণযোগ্য (পাঠ্য ফাইল, STDOUT, ইত্যাদি)

এখানে আরও কয়েকটি উদাহরণ দেওয়া হল:

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম কোড জয়!

কিছু পরীক্ষার কেস:

   +--------+----------+-------------+
   | Colors |  Foods   |  Countries  |
   +--------+----------+-------------+
   | red    | pizza    | Switzerland |
 /-->     /---->       |             |
 | |[kale]/ | hot dogs | Brazil      |
 | |     <----------------------\    |
 | | orange |[yellow]\ | [green]/    |
 | +--------+--------|-+-------------+
 \-------------------/


/------------------------------------------\
|                                          |
|  +------------------+----------+-------+ |
|  | frog             |          |       | |
|  | forge            | dog      | eagle | |
|  | foundation       | diligent | ease  | |
|  |[Brother]--\      | down     | elf   | |
|  |           |      |[egg]--\  |[fort]---/
\---->         |      |       |  |       |  
   |           \-\    |       \----->    |  
   +-------------|----+----------+       |  
   |   Boy       \-->            |       |  
   |   Bull                      |       |  
   |   Browser                   |       |  
   +-----------------------------+-------+ 


             /--------------------------------------\
             |                     /---------------\|
/------------|---------------------/               ||
|            |               /---------------\     ||
|  +---------|-+-----------+-|------+--------|+    ||
\---->       | |  clarinet | \>     | [drums]/|    ||
   | [viola]\\--->         |        +---------+    ||
   |        \----->        |        |         |/---/|
   +-----------+ [violin]\ |        | [cello]--/    |
   |        <------------/ |        +---------+     |
   |           +-----------+      <----------\|     |
   |           |           |        |  [tuba]/|     |
   |           | [piano]\  |        |         |     |
   |        <-----------/  |        |         |     |
   |           +-----------+--------+         |     |
   |           |                    |[trumpet]------/
   | [flute]----->                  |         |      
   |           |     saxaphone      |         |      
   +-----------+--------------------+---------+ 

5
এটি একটি দুর্দান্ত চ্যালেঞ্জ, এটি কেবল রক্তাক্ত বলে মনে হচ্ছে!
বিটা ক্ষয়

2
বাক্স শনাক্তকরণ লেখার চেষ্টা করার সময়, আমি উল্লেখ করেছি যে আপনার সীমানা পেরোনোর ​​জন্য যথেষ্ট তীর থাকলে, সেখানে কতগুলি বাক্স দ্ব্যর্থহীন হওয়া সম্ভব, উদাহরণস্বরূপ, এই লেআউটটিতে পেস্টবিন . com/xyBjTAwK কতটি বাক্স রয়েছে ? আমাদের কিছু গ্যারান্টি থাকতে পারে যে এটি ঘটবে না, বা পরিস্থিতির জন্য প্রত্যাশিত আচরণের ব্যাখ্যা।
ভিজ্যুমেলন

2
@ ভিজুয়ালমেলন আপনি ধরে নিতে পারেন যে ঘটবে না। 2 টি প্লাস পরের সারিতে / কলামে থাকা এবং সংযুক্ত না হওয়ার ক্ষেত্রে কখনও ঘটবে না। এছাড়াও, বন্ধনী সম্পর্কে, এটি আমার পক্ষে একটি ত্রুটি ছিল। আপনি ধরে নিতে পারেন যে বন্ধনীগুলির যে কোনও কিছুই সরানো আছে।
স্ট্রেচ পাগল

1
আমি কেবল যা জিজ্ঞাসা করি এটি মান সারণী বাদ দিয়ে মূল টেবিলের মতো দেখতে একটি টেবিলের আউটপুট দেয়। অন্য কথায়, যতক্ষণ না এটি একটি টেবিলের মতো দেখাচ্ছে (যেমন কোনও র‌্যান্ডম লাইন ব্রেক হয় না), আমি যে জিনিসগুলি দেখতে পাচ্ছি না তার
স্ট্রেচ ম্যানিয়াক

1
অর্ডারে, যদি তীরটি নির্দেশ করছে যেখানে আইটেমের শীর্ষটি সঠিকভাবে স্থাপন করা হয়, তবে এটি সঠিক জায়গায় হওয়া উচিত। উদাহরণস্বরূপ, "ভাই" "ছেলে" এর ডানদিকে যাবে। আপনি ধরে নিতে পারেন যে তীরটি একটি মাল্ট্রো আইটেমের গন্তব্যের প্রথম সারিতে নির্দেশ করছে। কোন আইটেমটিকে কী যোগ্য করে তোলে - বন্ধনী দ্বারা বেষ্টিত যে কোনও কিছু (এমনকি> <| wh এবং সাদা স্থান) আইটেমের অংশ হিসাবে বিবেচিত হয়। এর উপরে যদি কোনও তীর না বেরিয়ে উপরে ব্র্যাকেট থাকে, তবে এটি কোনও মাল্টলাইন আইটেমের অংশ।
প্রসারিত পাগল

উত্তর:


8

পাইথন, 700 681 676 667 টি অক্ষর

এখনও পুরোপুরি গল্ফ হয়নি, তবে একটি উত্তর দিতে চেয়েছিল।

import os
D=map(list,os.read(0,9999).split('\n'))
Z=Q=[-1,0,1,0,-1]
J=''.join
def T(y,x,d,_):c=D[y][x];D[y][x]=' ';d={'\\':3-d,'/':1-d}.get(c,d)%4;j=(y+Q[d],x+Q[d+1],d,c=='>');return c in'<>'and j or T(*j)
def F(y,x,d):
 if y<Y or x<L:
    if D[y][x]=='+':
     if J(D[y]).find('+',x+1)+1:F(y,x+1,1)
     if any((l[x:]+[''])[0]=='+'for l in D[y+1:]):F(y+1,x,2)
    else:D[y][x]='--||'[d];F(y+Q[d],x+Q[d+1],d)
i=0
for l in D:
 I=l.index
 if'+'in l:
    if Z:P,K,L,Z=i,I('+'),J(l).rfind('+'),0
    Y=i
 while'['in l:
    s,e=map(I,'[]');y,x,_,R=T(i,e+1,1,1);W=l[s+1:e]
    if R:D[y][x:x+e-s-1]=W
    else:D[y][x-e+s+2:x+1]=W
    l[s:e+1]=' '*(e-s+1)
 i+=1
F(P,K+1,1);F(P+1,K,2)
for l in D:print J(l)

কৌশল :

আমি ইনপুটটিকে ম্যাট্রিক্সে পরিণত করি। তারপরে আমি এটি লাইন লাইন স্ক্যান করে [এস finding প্রত্যেকটির জন্য [, আমি মিল খুঁজে পাই ], তারপরে আমি স্পটটির Tসাথে সাথে ডানদিকে ডানদিকে ট্রেস ফাংশনটি কল করি ]। ট্রেস ফাংশনটি লাইনের সাথে অনুসরণ করে পাথকে ' 'যেমন যায় তেমনভাবে প্রতিস্থাপন করে এবং যেখানে শব্দটি যাওয়া উচিত সেখানে ফিরে আসে। তারপরে আমি শব্দটি পুরানো স্থানে মুছে ফেলব এবং শব্দটি নতুন জায়গায় রেখেছি।

অবশেষে, আমি কল করি F, যা পুনরাবৃত্তভাবে বাক্সগুলিকে পুনর্গঠন করে।

পরীক্ষা :

reorg_test1... True
Input:
+-------+--------+
| Verbs | Nouns  |
+-------+--------+
|[Truck]--->     |
| eat   | Banana |
|       | Car    |
+-------+--------+


Output:
+-------+--------+
| Verbs | Nouns  |
+-------+--------+
|       |   Truck|
| eat   | Banana |
|       | Car    |
+-------+--------+



reorg_test2... True
Input:
+-----------+----------+
|   Verbs   |  Nouns   |
+-----------+----------+
|           |          |
|[is a noun]->         |
| eat       | Banana   |
|           | Car      |
+-----------+----------+


Output:
+-----------+----------+
|   Verbs   |  Nouns   |
+-----------+----------+
|           |          |
|           | is a noun|
| eat       | Banana   |
|           | Car      |
+-----------+----------+



reorg_test3... True
Input:
    +-----------+----------+
    |   Verbs   |  Nouns   |
    +-----------+----------+
    | [Truck]--\|          |
  /------------/|        <--\
  | | eat       | Banana   ||
  | |  /--\     | Car      ||
  | +--|--|-----+----------+|
  \----/  \-----------------/


Output:
    +-----------+----------+
    |   Verbs   |  Nouns   |
    +-----------+----------+
    |           |          |
    |           |   Truck  | 
    | eat       | Banana   | 
    |           | Car      | 
    +-----------+----------+ 




reorg_test4... True
Input:
   +--------+----------+-------------+
   | Colors |  Foods   |  Countries  |
   +--------+----------+-------------+
   | red    | pizza    | Switzerland |
 /-->     /---->       |             |
 | |[kale]/ | hot dogs | Brazil      |
 | |     <----------------------\    |
 | | orange |[yellow]\ | [green]/    |
 | +--------+--------|-+-------------+
 \-------------------/


Output:
   +--------+----------+-------------+
   | Colors |  Foods   |  Countries  |
   +--------+----------+-------------+
   | red    | pizza    | Switzerland |
   | yellow |   kale   |             |
   |        | hot dogs | Brazil      |
   |green   |          |             |
   | orange |          |             |
   +--------+----------+-------------+




reorg_test5... True
Input:
/------------------------------------------\
|                                          |
|  +------------------+----------+-------+ |
|  | frog             |          |       | |
|  | forge            | dog      | eagle | |
|  | foundation       | diligent | ease  | |
|  |[Brother]--\      | down     | elf   | |
|  |           |      |[egg]--\  |[fort]---/
\---->         |      |       |  |       |  
   |           \-\    |       \----->    |  
   +-------------|----+----------+       |  
   |   Boy       \-->            |       |  
   |   Bull                      |       |  
   |   Browser                   |       |  
   +-----------------------------+-------+ 


Output:


   +------------------+----------+-------+  
   | frog             |          |       |  
   | forge            | dog      | eagle |  
   | foundation       | diligent | ease  |  
   |                  | down     | elf   |  
   |                  |          |       |  
   |  fort            |          |       |  
   |                  |          |   egg |  
   +------------------+----------+       |  
   |   Boy           Brother     |       |  
   |   Bull                      |       |  
   |   Browser                   |       |  
   +-----------------------------+-------+ 



reorg_test6... True
Input:
             /--------------------------------------\
             |                     /---------------\|
/------------|---------------------/               ||
|            |               /---------------\     ||
|  +---------|-+-----------+-|------+--------|+    ||
\---->       | |  clarinet | \>     | [drums]/|    ||
   | [viola]\\--->         |        +---------+    ||
   |        \----->        |        |         |/---/|
   +-----------+ [violin]\ |        | [cello]--/    |
   |        <------------/ |        +---------+     |
   |           +-----------+      <----------\|     |
   |           |           |        |  [tuba]/|     |
   |           | [piano]\  |        |         |     |
   |        <-----------/  |        |         |     |
   |           +-----------+--------+         |     |
   |           |                    |[trumpet]------/
   | [flute]----->                  |         |      
   |           |     saxaphone      |         |      
   +-----------+--------------------+---------+ 


Output:




   +-----------+-----------+--------+---------+      
   |  cello    |  clarinet |   drums|         |      
   |           |  trumpet  |        +---------+      
   |           |   viola   |        |         |      
   +-----------+           |        |         |      
   |  violin   |           |        +---------+      
   |           +-----------+  tuba  |         |      
   |           |           |        |         |      
   |           |           |        |         |      
   |   piano   |           |        |         |      
   |           +-----------+--------+         |      
   |           |                    |         |      
   |           |  flute             |         |      
   |           |     saxaphone      |         |      
   +-----------+--------------------+---------+ 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.