মিঃ জোন্সকে তার সাইকেলটি রাউন্ড ট্রিপ উপভোগ করতে সহায়তা করুন


18

মিঃ জোন্স তাঁর সাইকেলটিতে একটি রাউন্ড ট্রিপ করতে চান। তিনি নির্বিচারে বেশ কয়েকটি শহর ঘুরে দেখতে চান, তবে তার রুটটি অবশ্যই এটি অতিক্রম করতে হবে না, কারণ তার ছুটিতে দু'বার একই জায়গায় থাকতে ঘৃণা করে। যেহেতু তিনি সত্যই সাইক্লিং পছন্দ করেন, তার রুটের দৈর্ঘ্য সম্পূর্ণ অপ্রাসঙ্গিক, তবে তিনি লক্ষ্য ছাড়াই ল্যান্ডস্কেপ ঘুরে বেড়াতে অপছন্দ করেন। তিনি যে পথটি পছন্দ করেন তা হ'ল শহর থেকে সোজা লাইনে অন্য কোনও পথ ছাড়াই to

মিঃ জোন্স যেহেতু একটি উত্সাহী কোড গল্ফার, তিনি চান যে আপনি এমন একটি প্রোগ্রাম সন্ধান করুন, যা তার জন্য একটি শহর ঘুরে বেড়ানোর পরিকল্পনা করে। ইনপুটটির ফর্ম রয়েছে A (B|C)Aএকটি শহরের নাম Bএবং Cএটি এর স্থানাঙ্ক। আপনি ধরে নিতে পারেন, স্থানাংকটি ইতিবাচক এবং 1000 এরও কম। শহরগুলির জন্য ডেটা সেটগুলি লাইন-পৃথক। উদাহরণ ইনপুটটি দেখতে কেমন হতে পারে তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

সামটাউন (1 | 10)
এসিটি (3 | 4)
যেখানেই (7 | 7)
হোম (5 | 1)

মিঃ জোন্স প্যাডেন্টিক নয়, তিনি কেবল একটি কার্যকর প্রোগ্রাম করতে চান। সুতরাং, আপনি নিজের দ্বারা সিদ্ধান্ত নিতে পারেন আউটপুটটি কেমন দেখাচ্ছে, যতক্ষণ না এটি এই শর্তগুলি মেটায়:

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

একটি আউটপুট এইরকম দেখতে পারে:

  1234567
 1 ডি  
 2 * * 
 3 * * 
 4 খ *
 5 * *
 * * *
 7 * সি
 8 * ** 
 9 * *   
10A **

উ: সামারটাউন
বি: এসিটি
সি: যেখানেই হোক
ডি: হোম

ক্ষুদ্রতম চর গণনা সহ প্রোগ্রামটি জয়ী হয়। সংকলক / দোভাষীকে আমি পরামিতিগুলি গণনা করি না, যদি সেগুলি সংকলনের জন্য প্রয়োজন হয় তবে দয়া করে এই বিধিটিকে অপব্যবহার করবেন না। সাধারণ কোড গল্ফ বিধি প্রযোজ্য।

এখানে আরও একটি টেস্টকেস দেওয়া হয়েছে। আপনার আউটপুটটি আমার সাথে মেলে না, বা আপনাকেও আমার মতো একই পথ বেছে নিতে হবে না। আউটপুট হাত দ্বারা আঁকা এবং একটি সম্ভাব্য আউটপুট দেখায়। ইনপুট:

হোম (5 | 7)
সুপারমার্কেট (13 | 12)
পার্ক (15 | 5)
নতুন প্লাজা (9 | 16)
বন্ধুর বাড়ি (20 | 11)
পুরানো দুর্গ (14 | 21)
নদীর তীরে (1 | 20)
সৈকত (10 | 1)
সিনেমা (21 | 18)
বন (23 | 7)
ছোট দ্বীপ (21 | 1)
কোড-গল্ফ যাদুঘর (6 | 25)
বিমানবন্দর (18 | 25)
চায়ের দোকান (24 | 14)
রেস্তোঁরা (24 | 22)
দুর্দান্ত সেতু (3 | 12)
SO বিল্ডিং (25 | 9)

এবং এটি একটি উদাহরণ আউটপুট:

           1111111111222222
  1234567890123456789012345
 1 এইচ * * কে    
 2 * * * *   
 3 * * * *   
 4 * * ** *   
 5 * সি *   
 * * *   
 7 এজে  
 8 * *  
 9 * কিউ
10 * *
11 * *** ই *
12 পিবি *** * * 
১৩ * * * * 
14 * * * এন 
15 * * * * 
16 * ডি * * 
17 * * * * 
18 * * আমি * 
19 * * * * 
20 জি * * * 
21 * এফ * *
22 * ** * ও 
23 * ** * **  
24 * ** * *    
25 এল ** এম **

একটি বাড়ি
বি: সুপার মার্কেট
সি: পার্ক
ডি: নতুন প্লাজা
ই: বন্ধুর বাড়ি
এফ: পুরাতন দুর্গ
জি: নদীর ধারে
এইচ: সৈকত
আমি: সিনেমা
জে: বন
কে: ছোট দ্বীপ
এল: কোড-গল্ফের যাদুঘর
এম: বিমানবন্দর
এন: চায়ের দোকান
ও: রেস্তোঁরা
পি: দুর্দান্ত সেতু
প্রশ্ন: এসও বিল্ডিং

আমি ইংরেজী নেটিভ স্পিকার নই। প্রয়োজনে আমার ভাষা এবং ব্যাকরণ সংশোধন করতে দ্বিধা বোধ করুন।

উত্তর:


9

জে, 357 288

m=:>:>./c=:>1{"1 p=:([:<`([:<1-~[:".;._1'|',}:);._1'(',]);._2(1!:1)3
'n c'=:|:o=:p/:12 o.j./"1 c-"1(+/%#)c
C=:<"1 c
L=:u:65+i.#o
g=:<"1;c([:<@|:0.5<.@+[+>@])"1(-~/"2(<@:*]%~i.@>:@])"0([:>./|@-/)"2)>C,"0(1|.C)
echo(u:48+10|i.>:0{m),|:(u:48+10|>:i.1{m),L C}'*'g}m$' '
echo' ',L,.':',.' ',.n

এটি কেবলমাত্র আসলটি দ্রুত ছিটকে যাওয়া (নীচে দেখুন)। প্রচুর অকেজো র‌্যাঙ্কের হেরফের এবং বক্সিং মুছে ফেলা সম্ভবত এখনও প্রচুর গল্ফিং সম্ভব।

কেবলমাত্র সতর্কতা: রুলার উদাহরণ আউটপুট থেকে পৃথক কেবল শেষ সংখ্যা।

সম্পাদনা করুন: বাগ ফিক্স - শহরগুলির ভুল লেবেল ছিল (এবং মানচিত্রে আলফা ক্রমে ছিল না)।

সম্পাদনা 2: 69 টি অক্ষরের সঞ্চয় হিসাবে হর্সপ্লে এবং টমফুলারি সমস্ত ধরণের সরানো হয়েছে।

আউটপুট (ভারব্যাটিম, পরীক্ষার স্ক্রিপ্ট থেকে):

First example: 
01234567
1    B  
2   **  
3   * * 
4  A  * 
5  *  * 
6 *    *
7 *    C
8 *  ** 
9* **   
0D*     

A: ACity    
B: Home     
C: Wherever 
D: SomeTown 

Second example:
012345678901234567890123456789012
1         D          F           
2        * *       ***           
3       *   **    *  *           
4       *     * **   *           
5      *       E     *           
6     *              *           
7    C              *          *I
8     **            *      ***** 
9       *           *   *H*   *  
0        **         * **     *   
1          **       G*     **    
2  A*********B            *      
3   **                   *       
4     *                 J        
5      **              *         
6        Q             *         
7      **             *          
8    **              K           
9  **                 *          
0P*                    *         
1 *           N        *         
2  *        ** *        L        
3   *     **    *     **         
4    *  **       *  **           
5     O*          M*             

A: great bridge        
B: supermarket         
C: home                
D: beach               
E: park                
F: little island       
G: friend's house      
H: SO building         
I: forest              
J: tea-shop            
K: cinema              
L: restaurant          
M: airport             
N: old castle          
O: museum of code-golf 
P: riverside           
Q: new plaza           
   End Second

অবারিত মূল:

coords =: > 1 {" 1 parsed =: ([:<`([:<[:".;._1'|',}:);._1'(',]);._2 (1!:1)3

center =: (+/%#) coords
max =: >:>./ coords
angles =:  12 o. j./"1 coords -"1 center
ordered =: parsed /: angles
paths =: >(],"0(1)|.]) 1 {" 1 ordered

path_grid_lengths =: ([:>./|@-/)"2 paths
path_grid_interval =: ([:<]%~i.@>:@|)"0 path_grid_lengths
path_grid_distances =: -~/"2 paths
path_grid_steps =: path_grid_distances ([:<[*>@])"0 path_grid_interval

path_grid_points_sortof =: (> 1{"1 ordered) ([:<0.5<.@+[+>@])"0 path_grid_steps
path_grid_points =: <"1;([:<>@[,.>@])/"1 path_grid_points_sortof

graph_body =: }."1}. (u:65+i.#ordered) (1{"1 ordered) } '*' path_grid_points} max $ ' '

axis_top =: |:(":"0)10|}.i. 1{max
axis_side =: (":"0)10|i. 0{max

echo |:(axis_side) ,"1 axis_top, graph_body
echo ''
echo (u:65+i.#parsed),.':',.' ',.(> 0{"1 ordered)

আপনি জানেন, প্রশ্নটি বলে যে আউটপুট বেশিরভাগ ফ্রিফর্ম, সুতরাং আপনাকে লেবেলের একটি নির্দিষ্ট ক্রম রাখতে হবে না।
এফইউজএক্সএক্সএক্সএল

@ ফুজজেক্সএল: এটি আদেশ নয়, শহরগুলিকে ভুল (ভুল অবস্থান) হিসাবে চিহ্নিত করা হয়েছিল
জেসি মিলিকান

1
তুমি জিতেছ. (15 অক্ষর)
FUZxxl

2
একটি মন্তব্যে কমপক্ষে 15 টি অক্ষর থাকতে হবে। যেহেতু আমি আপনাকে বলতে চেয়েছিলাম যে আপনি আমার কাজটি জিতেছেন, এবং সরল বার্তা »আপনি জিতবেন then তখন 15 বছরের কম হয়, তাই আমাকে এই পাঠ্যটি যুক্ত করতে হয়েছিল।
FUZxxl

2
ঠিক আছে, আমি খুশি যে আমাদের এই ছোট্ট আলোচনা হয়েছিল।
জেসি মিলিকান

21

হাস্কেল, 633 টি অক্ষর

import List
c n=n>>=(++" ").show.(*3)
(x&y)l="<text x='"++c[x]++"' y='"++c[y]++"'>"++l++"</text>"
f%p=[a-1,b+2,(a+b)/2]where n=map(f.fst)p;a=minimum n;b=maximum n
s p=concat["<svg xmlns='http://www.w3.org/2000/svg' viewBox='",c[i,m-1,j,n],"'><polygon fill='none' stroke='#c8c' points='",c$snd=<<(sort$map a p),"'/><g font-size='1' fill='#bbb'>",(\x->(x&m$show x)++(i&x$show x))=<<[floor(i`min`m)..ceiling(j`max`n)],"</g><g font-size='2'>",snd=<<p,"</g></svg>"]where a((x,y),_)=(atan2(x-q)(y-r),[x,y]);[i,j,q,m,n,r]=fst%p++snd%p
w(l,s)=((x,y),(x&y)l)where(x,r)=v s;(y,_)=v r
v=head.reads.tail
main=interact$s.map(w.break(=='(')).lines

কোড-গল্ফের জন্য বরং লালসা করা, তবে একটি সুন্দর এসভিজি মানচিত্র তৈরি করে: মিঃ জোন্স'র রুট

অথবা, যদি আপনার ব্রাউজারটি এই চিত্রের একটি পিএনজি এসভিজি পরিচালনা করতে না পারে: মিঃ জোনসের পথ


  • সম্পাদনা করুন: (8৪৮ -> in৩৩) ইন-লাইন সমন্বিত অঙ্কন, এবং সম্ভবত প্রয়োজনের চেয়ে বেশি আঁকুন, যাতে তাদের দ্বারা ক্লিপ দেওয়া যায় viewBox; এখানে এবং সেখানে কয়েকটি গল্ফ-কৌশলও।

এক্সএমএলএনএস স্টাফ ফেলা সম্পর্কে কীভাবে? কিছু দর্শকের এটির দরকার নেই।
FUZxxl

1
আমার কাছে থাকা কোনও ব্রাউজার এসভিজি ডাব্লু / ও এক্সএমএনএলস ঘোষণাটি প্রদর্শন করবে না।
এমটিএনভিউমার্ক 16

এইচএম ... কমপক্ষে জিনোমের চোখগুলি করবে। (যদিও এটি ব্রাউজার নয়)
FUZxxl

12

পাইথন, 516 476 বাইট

#!/usr/bin/python
#coding=utf-8
import sys
H=V=0
T=[]
k=65
for L in sys.stdin.readlines():
 i,j,K=L.find('('),L.find('|'),'%c'%k
 n,h,v=L[:i-1],int(L[i+1:j]),int(L[j+1:-2])
 H=max(H,h);V=max(V,v);T+=[(K,h,v)];k+=1;print K+':',n
V=V+1&~1
for s in zip(*['%3d'%(i+1)for i in range(H)]):print'   '+''.join(s)
C=H*V*[u'─']
C[0::H]=u'│'*V
C[1::H]=V/2*u'└┌'
C[H-1::H]=V/2*u'┐┘'
C[0:2]=u'┌─'
C[-H:-H+2]=u'└─'
for K,h,v in T:C[v*H-H+h-1]=K
for i in range(V):print'%3d'%(i+1)+''.join(C[i*H:i*H+H])

(দ্রষ্টব্য: আমি প্রথম দুটি লাইন বাইট গণনায় অন্তর্ভুক্ত করি নি, আমি তাদের "দোভাষী প্যারামিটার" হিসাবে বিবেচনা করি But তবে আমি প্রোগ্রামটির utf-8 দৈর্ঘ্যের জন্য বাইটে নিজেকে চার্জ করেছিলাম।)

আপনার দ্বিতীয় উদাহরণে আমি উত্পাদন:

A: home
B: supermarket
C: park
D: new plaza
E: friend's house
F: old castle
G: riverside
H: beach
I: cinema
J: forest
K: little island
L: museum of code-golf
M: airport
N: tea-shop
O: restaurant
P: great bridge
Q: SO building

            11111111112222222222333
   12345678901234567890123456789012
  1┌────────H──────────K──────────┐
  2│┌─────────────────────────────┘
  3│└─────────────────────────────┐
  4│┌─────────────────────────────┘
  5│└────────────C────────────────┐
  6│┌─────────────────────────────┘
  7│└──A──────────────────────────J
  8│┌─────────────────────────────┘
  9│└──────────────────────Q──────┐
 10│┌─────────────────────────────┘
 11│└─────────────────E───────────┐
 12│┌P─────────B──────────────────┘
 13│└─────────────────────────────┐
 14│┌─────────────────────N───────┘
 15│└─────────────────────────────┐
 16│┌──────D──────────────────────┘
 17│└─────────────────────────────┐
 18│┌──────────────────I──────────┘
 19│└─────────────────────────────┐
 20G┌─────────────────────────────┘
 21│└───────────F─────────────────┐
 22│┌─────────────────────O───────┘
 23│└─────────────────────────────┐
 24│┌─────────────────────────────┘
 25│└───L───────────M─────────────┐
 26└──────────────────────────────┘

হ্যাঁ, ইউনিকোড গ্লিফস!


ওও ... আমি আমার সাইকেলের ভ্রমণটি পছন্দ করব না। মূলত, আমি কেবল দুটি শহরের মধ্যে সবচেয়ে সংক্ষিপ্ত রুটের অনুমতি দেওয়ার পরিকল্পনা করেছি, তবে আমি এই বিধিনিষেধটি ভুলে গিয়েছি। আপনি যদি সম্মত হন তবে আমি প্রশ্নটি আবারও লিখতে চাই, যাতে দুটি শহরের মধ্যে কেবল সরাসরি রুটের অনুমতি দেওয়া যায়।
FUZxxl

1
অবশ্যই, ঠিক আছে। এটি নগদ পুরস্কার নয় :)
কেথ র্যান্ডাল

আপনাকে অনেক ধন্যবাদ আপনার এন্ট্রি ভুল করার জন্য আমি খুব দুঃখিত, পরিবর্তে আপনি একটি বিশেষ মূল্য পান।
FUZxxl

6

পাইথন, 1074 বাইট

ঠিক আছে, কাজের জন্য যুক্তিসঙ্গত পথ পাওয়ায় অনেকগুলি বাইট (এবং সময়) ব্যয় করেছে।

#!/usr/bin/python
#coding=utf-8
import sys
H=V=0
T=[]
k=65
R=1000
for L in sys.stdin.readlines():
 i,j,K=L.find('('),L.find('|'),'%c'%k
 n,h,v=L[:i-1],int(L[i+1:j]),int(L[j+1:-2])
 H=max(H,h);V=max(V,v);T+=[(v*R-R+h-1,K)];k+=1;print K+':',n
for s in zip(*['%3d'%(i+1)for i in range(H+1)]):print'   '+''.join(s)
T.sort()
U=reduce(lambda a,x:a[:-1]+[(a[-1][0],x)]if x/R==a[-1][0]/R else a+[(x,x)],[[(T[0][0],T[0][0])]]+map(lambda x:x[0],T))
C=R*V*[' ']
r=0
for x,y in U:C[x:y]=(y-x)*u'─'
for (a,b),(c,d)in zip(U,U[1:]):
 if r:
  if d%R>b%R:x=b/R*R+d%R;C[b:x]=(x-b)*u'─';C[x:d:R]=(d-x)/R*u'│';C[x]=u'┐'
  else:x=d/R*R+b%R;C[d:x]=(x-d)*u'─';C[b:x:R]=(x-b)/R*u'│';C[x]=u'┘'
 else:
  if c%R<a%R:x=a/R*R+c%R;C[x:a]=(a-x)*u'─';C[x:c:R]=(c-x)/R*u'│';C[x]=u'┌'
  else:x=c/R*R+a%R;C[a:x:R]=(x-a)/R*u'│';C[x:c]=(c-x)*u'─';C[x]=u'└'
 r^=1
p=U[0][1];C[p:H]=(H-p)*u'─'
if r:p=U[-1][1];C[p:R*V]=(R*V-p)*u'─'
else:V+=1;C+=[' ']*R;p=U[-1][0]+R;C[p:R*V]=(R*V-p)*u'─';C[p]=u'└'
C[H::R]=u'┐'+u'│'*(V-2)+u'┘'
for p,K in T:C[p]=K
for i in range(V):print'%3d'%(i+1)+''.join(C[i*R:i*R+H+1])

যদিও দুর্দান্ত পথ তৈরি করে:

A: SomeTown
B: ACity
C: Wherever
D: Home


   12345678
  1  ┌─D──┐
  2  │    │
  3  │    │
  4  B───┐│
  5      ││
  6      ││
  7┌─────C│
  8│      │
  9│      │
 10A──────┘

এবং

A: home
B: supermarket
C: park
D: new plaza
E: friend's house
F: old castle
G: riverside
H: beach
I: cinema
J: forest
K: little island
L: museum of code-golf
M: airport
N: tea-shop
O: restaurant
P: great bridge
Q: SO building

            111111111122222222223333
   123456789012345678901234567890123
  1         H──────────K───────────┐
  2         │                      │
  3         │                      │
  4         │                      │
  5         └────C────────────────┐│
  6                               ││
  7    A──────────────────────────J│
  8    │                           │
  9    └───────────────────Q       │
 10                        │       │
 11  ┌────────────────E────┘       │
 12  P─────────B──────────┐        │
 13                       │        │
 14        ┌──────────────N        │
 15        │                       │
 16        D───────────┐           │
 17                    │           │
 18┌───────────────────I           │
 19│                               │
 20G────────────┐                  │
 21             F                  │
 22             └─────────O        │
 23                       │        │
 24                       │        │
 25     L───────────M─────┘        │
 26     └──────────────────────────┘

এটি একটি দুর্দান্ত, যদিও এটি দুটি শহরের মধ্যে সম্ভব সংক্ষিপ্ততম সংযোগ ব্যবহার করে না।
FUZxxl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.