কোডের (সহজ) রাস্তা


30

ইনপুট:

  • একটি পূর্ণসংখ্যা , যা গ্যারান্টিযুক্ত ।n3
  • একটি পূর্ণসংখ্যা , যা ।d[1,0,1]

আউটপুট:

আকার এর একটি রাস্তা , যা উত্তর-পশ্চিম দিকে হবে যদি ; একটি উত্তর দিক যদি ; বা উত্তর-পূর্ব দিক যদি । রাস্তাটি সর্বদা তিনটি স্পেস প্রশস্ত হবে (বা সাধারণভাবে পাঁচটি যদি আমরা বাইরের সীমানাগুলি অন্তর্ভুক্ত করি)। এছাড়াও, নীচের অংশে একটি রাস্তা বিভাজক লাইন থাকবে এবং তারপরে উপরের দিকে যাওয়ার সময় বিকল্প হবে goingnd=1d=0d=1

কিছু উদাহরণ:

ইনপুট: আউটপুট:n=7,d=1

      / / /
     /   /
    / / /
   /   /
  / / /
 /   /
/ / /

ইনপুট: আউটপুট:n=4,d=1

\   \
 \ \ \
  \   \
   \ \ \

চ্যালেঞ্জ বিধি:

  • যে কোনও পরিমাণ লিডিং / ট্রেলিং স্পেস এবং / অথবা নিউলাইনগুলি গ্রহণযোগ্য, যতক্ষণ না এটি স্ক্রিনের কোথাও প্রয়োজনীয় রাস্তাটি প্রিন্ট করে।
  • বিকল্পগুলির পরিবর্তে আপনাকে এর পরিবর্তে বা বিকল্পগুলি ব্যবহার করার অনুমতি দেওয়া হচ্ছে । এছাড়াও, আপনি তিনটি বিকল্পের মধ্যে কোনটি তিনটি দিকনির্দেশের মানচিত্র চয়ন করতে পারেন। (যা বিকল্প ব্যবহার করেছি উল্লেখ করতে হলে থেকে পৃথক নিশ্চিত করুন জন্য যথাক্রমে যে এই চ্যালেঞ্জ বিবরণ ব্যবহার করা হয়!)[1,0,1][0,1,2][1,2,3][1,0,1][north-west, north, north-east]
  • যে কোনও যুক্তিসঙ্গত আউটপুট ফর্ম্যাট গ্রহণযোগ্য। সবচেয়ে সাধারণ অবশ্যই এটি স্টুডউটে মুদ্রণ করা, তবে স্ট্রিং বা 2 ডি বর্ণচিহ্নের তালিকা হিসাবে এটি ফিরিয়ে দেওয়াও ঠিক আছে।

সাধারাইওন রুল:

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

পরীক্ষার কেস:

উপরোক্ত দুটি উদাহরণ এবং:

ইনপুট: আউটপুট:n=10,=0

|   |
| | |
|   |
| | |
|   |
| | |
|   |
| | |
|   |
| | |

3
বিকল্পের শিরোনাম: "ম্যাড সর্বাধিক কোড ওয়ারিয়র"
আকোজি

1
প্রথম উদাহরণটি কি ভুল নয়? এটি প্রতিটি জোড় লাইনের পরিবর্তে প্রতিটি বিজোড় লাইনে একটি মাঝারি স্ট্রিপ রয়েছে
moonheart08

2
@ moonheart08 নং নীচের দিকে সর্বদা রাস্তার বিভাজক লাইন থাকবে ইনপুটটি বিজোড় হোক না কেন even এর পরে উপরের দিকে যাওয়ার সময় এটি বিকল্প হয়। আমি পাঠ্যটিকে কিছুটা পরিবর্তন করেছি আশা করি এটি পরিষ্কার হয়ে যাবে।
কেভিন ক্রুইজসেন

ওহ, তাই আমি ভুল। ঠিক আছে। স্পষ্ট করার জন্য ধন্যবাদ।
moonheart08

উত্তর:


2

ক্যানভাস , 23 22 বাইট

B}⁴H‟m↶⁷?/|∙/╋]\|∙\╋]}

এখানে চেষ্টা করুন!

দিক ইনপুট 0, 1 এবং 2 ব্যবহার করে।

ব্যাখ্যা:

...‟    push "--¶¶- ¶¶--"
    m   mold the horizontal length to the 1st input - a horizontal road
     ↶  rotate counter-clockwise - so the separator is on the bottom
        also replaces the dashes with bars

⁷?     ]     ]}  switch over the 2nd input:
                 default case (input 2):
  /                pad with spaces to a "/" diagonal
   |∙/╋            replace "|" with "/"
                 case 0:
        \          pad with spaces to a "\" diagonal
         |∙\╋      replace "|" with ""

case 1 is empty, but because of a bug, the trailing "}" is still required

আপনি একটি ব্যাখ্যা যোগ করতে আপত্তি হবে? :)
কেভিন ক্রুইজসেন

1
পুনঃটুইট
ডিজাইমা

16

পাইথন 2 , 79 78 73 72 বাইট

n,d=input()
c='|\/'[d]
i=n
while i:print' '*(n-i*d)+c,i%2*c or' ',c;i-=1

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

[1,0,-1]জন্য নেয়[north-west, north, north-east]

-1 বাইট, নীলকে ধন্যবাদ


3
জীজ, আমি কোটলিনে পাইথনের মতো কাটার জন্য কী দেব না
আদম

i%2*c or' 'একটি বাইট সংরক্ষণ করে।
নীল

7

পাইথন 2 , 66 বাইট

n,d=input()
s=' '+'|\/'[d]
for c in(s*n)[n:]:print' '*n+s,c+s;n+=d

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

ব্যবহার d=-1উঃপূঃ, জন্য d=0এন জন্য, এবং d=1উঃপঃ জন্য। নেতৃস্থানীয় স্থান অনুমতি দেওয়া হচ্ছে সুবিধা গ্রহণ করে। রাস্তার নীচের অংশটি একটি বিভাজক রয়েছে এমন নিয়মটি সমতাটি সঠিকভাবে পেতে এটি জটিল করে তোলে; এটি স্থান এবং রাস্তার চরিত্রের মধ্যে পরিবর্তনের (s*n)[n:]দ্বিতীয় অর্ধেক কেটে কাটা দ্বারা অর্জন করা হয়েছে 2n


6

1. পাইথন 3.5, 122 120 বাইট

স্ক্রিপ্ট দুটি প্যারাম নেয়: এন, ডি।

d: 0, 1, 2 -> \ | /

tio.run

import sys;(n,d)=[*map(int,sys.argv[1:3])];c="\\|/"[d]
for i in range(n):j=n+~i;print(" "*(i,0,j)[d],c,c*(j%2<1)or" ",c)

আউটপুট:

$ ./script.py 6 2
      /   /
     / / /
    /   /
   / / /
  /   /
 / / /
$ ./script.py 6 1
 |   |
 | | |
 |   |
 | | |
 |   |
 | | |
$ ./script.py 6 0
 \   \
  \ \ \
   \   \
    \ \ \
     \   \
      \ \ \

ব্যাখ্যা

# parse input params
(n,d)=[*map(int,sys.argv[1:3])]

# select char for "road"
c="\\|/"[d]

# loop n-times
for i in range(n):

    # complement (how many lines to end)
    j=n+~i

    # print
    #   space i or 0 or j times
    #   road, center of road if j is even else space, road
    print(" "*(i,0,j)[d], c, c*(j%2<1) or " ", c)

সম্পাদনা: -২ বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ


3
চমৎকার উত্তর! :) গল্ফ দুটি ছোট জিনিস: n-1-iহতে পারে n+~i( প্রাসঙ্গিক পরামর্শ ) এবং j%2==0হতে পারে j%2<1। আপনি তাদের এখনো দেখে থাকেন, তাহলে পাইথন মধ্যে golfing জন্য টিপস এবং মধ্যে golfing জন্য টিপস <সমস্ত ভাষা> শক্তি উভয় মাধ্যমে পড়তে আকর্ষণীয় হতে।
কেভিন ক্রুইজসেন

1
আপনাকে ধন্যবাদ :) আমি এটি n+~iএখনও দেখিনি , তবে সহায়ক বলে মনে হচ্ছে। কোড হাইলাইট করার জন্য ধন্যবাদ।
রিনি

আপনাকে স্বাগতম! আপনার থাকার উপভোগ করুন এবং অনেক উত্তর গল্ফ করছেন। :) ওহ, এবং একটি সুন্দর উইকএন্ডে দিন কাটা
কেভিন ক্রুইজসেন

j%2*" "or cআরেকটি বাইট সংরক্ষণ করে।
নীল

5

পাওয়ারশেল , 88 82 80 74 71 বাইট

-8 Mazzy ধন্যবাদ বাইট
-6 বাইট AdmBorkBork এবং Mazzy ধন্যবাদ
-3 বাইট AdmBorkBork ধন্যবাদ

param($n,$d)$n..1|%{' '*($_,($n-$_))[$d]+($y='/\|'[$d])," $y"[$_%2],$y}

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

NW, NE, N এর জন্য [0,1,2] ব্যবহার dকরে প্রথমে ব্যবধান পদ্ধতিটি পেতে প্রথমে দুবার একটি তালিকা সূচক হিসাবে ব্যবহার করে (2 ব্যবহার করার সময় তালিকাটি বাদ দেয় যা 0 আবার আসে) এবং লাইনগুলি আঁকলে কোন অক্ষরটি ব্যবহার করতে হবে। স্পেসের স্ট্রিংয়ের একটি তালিকা সংযোজন করে (যার ফলে সদস্যদের মধ্যে স্পেস থাকে যেমন যুক্ত করা হয়) যা রাস্তাটি তৈরি করে। মোডুলো ম্যাথের উপর ভিত্তি করে একটি খোলা লেন বা ড্যাশের মধ্যেও অদলবদল হয়।


1
80 বাইট যদি [0,1,2] [NW, NE, N] এর জন্য ব্যবহার করে
মজজি

1
@ মমজি স্মার্ট আমি ইচ্ছাকৃতভাবে একটি তালিকা পড়া বন্ধ সম্পর্কে ভুলে গেছি।
ভেস্কাহ

1
অ্যাডেমবর্কবার্ক থেকে অ্যারে.টো স্ট্রিং সহ দুর্দান্ত ধারণা! ধন্যবাদ। 74 বাইট
mazzy

3
মধ্যবর্তী অংশটিকে একটি অ্যারের পরিবর্তে স্ট্রিংয়ে সূচি দিয়ে 71 বাইট
অ্যাডমবর্কবর্ক


5

কাঠকয়লা , 33 29 23 বাইট

↷NNη⊘⊕ηUE¹¦¹F⟦²±²⟧«Jι⁰η

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। অন্তর্নিহিত চারকোলের বাগগুলি এখনই স্থির বলে মনে হচ্ছে আমি অনুকূল কোডটি বিজ্ঞাপন করতে পারি। ব্যাখ্যা:

↶N

প্রথম ইনপুট অনুসারে কার্সারের দিককে অ্যান্টিক্লোকের দিকে ঘোরান, যাতে 1 উত্তর পূর্ব, 2 উত্তর এবং 3 উত্তর পশ্চিম হয়।

Nη

রাস্তার দৈর্ঘ্য ইনপুট করুন।

⊘⊕ηUE¹¦¹

রাস্তার অর্ধেক দৈর্ঘ্য প্রিন্ট করুন এবং তারপরে এটি রাস্তার বিভাজককে প্রসারিত করুন।

F⟦²±²⟧«Jι⁰η

রাস্তার দু'দিকে মুদ্রণ করুন।

@ কেভিন ক্রুইজসেন পরবর্তীকালে মুছে ফেলা এই প্রশ্নের একটি শক্ত সংস্করণ জমা দিয়েছিল তবে যথেষ্ট প্রতিবেদক ব্যবহারকারীরা এটি এখানে দেখতে পাবেন: কোডটির (হার্ড) রাস্তা এই উত্তরের জন্য আমি যে প্রসারিত কৌশলটি ব্যবহার করেছি সে প্রশ্নের জন্য প্রযোজ্য নয়, তার পরিবর্তে আমি নিম্নলিখিত 47 45-বাইট প্রোগ্রাম লিখেছেন :

F³«J×ι⊘⊕θ⁰≔…⟦¹ ⟧⊕﹪ι²ιFη«↶§κ⁰F⊖§κ¹§ιⅉP§ιⅉ↑↷§κ⁰

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

F³«

পক্ষ এবং বিভাজক উপর লুপ।

J×ι⊘⊕θ⁰

পাশের শুরুতে ঝাঁপ দাও।

≔…⟦¹ ⟧⊕﹪ι²ι

একটি 1এবং একটি স্থান সমন্বিত একটি অ্যারে করুন , তবে আমরা বিভাজকের পরিবর্তে পক্ষগুলি আঁকছি যদি আবার স্থানটি সরিয়ে ফেলুন।

Fη«

প্রতিটি রাস্তা বিভাগে লুপ করুন।

↶§κ⁰

সেই অনুসারে কার্সারের দিকটি ঘোরান।

F⊖§κ¹

রাস্তার বিভাগের দৈর্ঘ্যের চেয়ে একেরও কম লুপ ...

§ιⅉ

... এবং অ্যারের বিকল্প উপাদানগুলি মুদ্রণ করুন। বিকল্পটি কর্সারের Y- স্থানাঙ্কের সাথে চক্রাকারে অ্যারেতে সূচি দ্বারা অর্জিত হয়।

P§ιⅉ

এই রাস্তা বিভাগের শেষ সারিটি মুদ্রণ করুন, তবে কার্সারটি সরানো ছাড়াই ...

... যাতে কার্সার পরিবর্তে পরবর্তী বিভাগের জন্য প্রস্তুত সরানো যেতে পারে।

↷§κ⁰

পরবর্তী বিভাগের জন্য প্রস্তুত কার্সার দিকটি ঘোরান।


4

কোটলিন , 96 92 বাইট

{n,d->val c="\\|/"[d];(0..n-1).map{println(" ".repeat(n-it*(d-1))+ "$c ${" $c"[it%2]} $c")}}

[-1, 0, 1] এর পরিবর্তে [0, 1, 2] গ্রহণ করে

এটি অন্যান্য ভাষায় সমাধানের জন্য একইভাবে কাজ করে, তবে দুর্ভাগ্যক্রমে কোটলিন সত্যিকার অর্থে এটি জ্বলজ্বল করে না।

val c=“\\|/“; কোটলিন স্ট্রিংসকে চার্জের অ্যারের মতো আচরণ করে (আপনার যেমন জাভাটির দিকে তাকাতে হবে) এই সুযোগটি গ্রহণ করে রাস্তাঘাটে বিল্ডিংয়ের ব্যবহারের জন্য চারটি পুনরুদ্ধার করে

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


হাই, পিপিসিজিতে আপনাকে স্বাগতম! আপনার আউটপুটে একটি ছোটখাটো সমস্যা আছে। রাস্তার কেন্দ্রে পরিবর্তিত রেখাগুলি শীর্ষে পরিবর্তে, এমনকি ইনপুটগুলির জন্য নীচে একটি লাইন দিয়ে শুরু করা উচিত। 4আমার 4পার্থক্যটি বোঝার জন্য আপনি আমার উদাহরণের সাথে আপনার আউটপুটটির তুলনা করতে পারেন। আমি কোটলিনকে সেভাবে ভাল করে জানি না তবে আমি মনে করি আপনি এটি পরিবর্তন করে (এবং একই সাথে গল্ফ 4 বাইট) পরিবর্তন [(it+1)%2]করতে পারেন [it%2]। :) এগুলি ছাড়াও এটি একটি দুর্দান্ত উত্তর, সুতরাং আমার কাছ থেকে +1।
কেভিন ক্রুইজসেন

দারুণ, স্বাগত ও সহায়তা করার জন্য অনেক ধন্যবাদ! আমি এটি পরিবর্তন করব
অ্যাডাম

4

টিএসকিউএল কোড, 171 117 বাইট

আমি বুঝতে পারি যে এটি কোড হিসাবে আরও খাটো লেখা যেতে পারে।

DECLARE @n INT=7,@d INT=0

,@ INT=0a:PRINT
space(@n-@*@d)+stuff(replicate(substring('\|/',@d+2,1)+' ',3),3,@%2,space(@%2))SET
@+=1IF @n>@ GOTO a

টিএসকিউএল কোয়েরি, 137 বাইট

USE master
DECLARE @n INT=6,@ INT=-1

SELECT space(@n-y*@)+z+iif(y%2=1,z,'  ')+z 
FROM(SELECT top(@n)row_number()over(order
by @)y,' '+substring('\|/',@+2,1)z FROM spt_values)x

আপনার ডাটাবেসটি ইতিমধ্যে যদি মাস্টার হয় তবে ইউএসই মাস্টার প্রয়োজন হয় না। কিছু ব্যবহারকারীর অবশ্য আলাদা ডিফল্ট ডাটাবেস রয়েছে।

চেষ্টা করার সময় স্ক্রিপ্ট কিছুটা আলাদা। আমাকে স্থান ascii-32 প্রতিস্থাপন করতে হবে ascii-160, ফাঁকা স্থান প্রদর্শন করা হয়নি।

চেষ্টা কর

কিছু টুইট তৈরি করে বুঝলাম যে আমি প্রতিস্থাপন করতে পারি

1/04 দ্বারা আদেশ

সঙ্গে

দ্বারা আদেশ


2
কীভাবে আসে order by 1/0শূন্য ত্রুটির দ্বারা বিভাজন ঘটায় না?
হানিবেজার

কারণ 1/0 গণনা করা হচ্ছে না। যেখানে উপস্থিত রয়েছে (1/0 নির্বাচন করুন) একই প্রভাব ফেলবে
t-clausen.dk


3

জাভাস্ক্রিপ্ট (ES8),  90 87  85 বাইট

(direction)(length)012

d=>g=(n,w=n)=>n?(c='/|\\'[d]).padStart([n--,,w-n][d])+` ${n&1?' ':c} ${c}
`+g(n,w):''

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


জাভাস্ক্রিপ্ট (ES6), 90 বাইট

এটির পরিবর্তে .padStart()পদ্ধতির পরিবর্তে আরও কিছু গণিতের সাথে অক্ষর অনুসারে আউটপুট চরিত্র আঁকানো হয় ।

(direction)(length)123

d=>n=>(g=x=>y?` /|\\
`[x+5?17+y%2*4>>--x+5-[,n+1-y,n,y][d]&1&&d:(x=n,y--,4)]+g(x):'')(y=n)

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


3

জেলি ,  31  30 বাইট

⁶ẋẋƤḂ};€ị“\/|”ẋ3KƊ}Ṛ⁹¡⁶-2¦€ÐeṚ

একটি ডায়াডিক লিঙ্কটি বামদিকে দৈর্ঘ্য এবং ডানদিকে প্রত্যাখাত-দিকনির্দেশ * স্বীকার করে যা অক্ষরের 2 ডি অ্যারে দেয়।
*[north-west, north, north-east]=[1, 0, -1]

এটি অনলাইন চেষ্টা করুন! (পাদলেখ লিঙ্কটি কল করে, নতুনলাইন অক্ষরের সাথে যোগ দেয় এবং ফলাফলটি মুদ্রণ করে)

কিভাবে?

⁶ẋẋƤḂ};€ị“\/|”ẋ3KƊ}Ṛ⁹¡⁶-2¦€ÐeṚ - Link: integer, L; integer, D
⁶                              - space character
 ẋ                             - repeat L times
     }                         - using the right argument (D):
    Ḃ                          -   mod 2 (0 if D = 0, 1 otherwise ...A would work too)
   Ƥ                           - for each prefix (of the list of spaces):
  ẋ                            -   repeat (D mod 2 times)
                  }            - using the right argument (D):
                 Ɗ             -   last three links as a monad:
        ị“\/|”                 -     index into "\/|" (1-indexed & modular)
              ẋ3               -     repeat three times - e.g. "\\\"
                K              -     join with spaces          "\ \ \"
      ;€                       - concatenate €ach (altered prefix with that list)
                     ¡         - repeat action...
                    ⁹          - ...number of times: right argument (-1 repeats 0 times)
                   Ṛ           - ...action: reverse (i.e. reverse if north-west)
                           Ðe  - for even indexes:
                         ¦€    -   sparse application for €ach...
                       -2      -   ...to indices: [-2] (the middle of the road)
                      ⁶        -   ...action: a space character
                             Ṛ - reverse

2

পাইথন 2, 127 বাইট

n,d=input()
c='|/\\'[d]
for i in range(n):t=0if d==0else(i if d<0else n-i);print(' '*t+'{} {} {}'.format(c,' 'if i%2==0else c,c))

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

@ টিফিল্ড থেকে নেওয়া প্রথম দুটি লাইন।


1
হাই, পিপিসিজিতে আপনাকে স্বাগতম! আমি আশঙ্কা করছি যে জমাগুলি হয় কোনও একটি পরামিতি গ্রহণকারী ফাংশন, বা একটি সম্পূর্ণ প্রোগ্রামের যুক্তি বা এসটিডিইএন থেকে ইনপুট গ্রহণ করতে হবে। আপনি যেমন স্নিপেটগুলি এখনই ব্যবহার করছেন তা ভীত নয়। এটি ঠিক করতে আপনি একটি শীর্ষস্থানীয় D,N=input()(এবং 3 এর পরিবর্তে পাইথন 2 ব্যবহার করতে পারেন) যোগ করতে পারেন । অথবা আপনি এই দুটি পরামিতি গ্রহণ করে ল্যাম্বডা ফাংশনে এটিকে পরিবর্তন করতে পারেন।
কেভিন ক্রুইজসেন

1
সুন্দর সমাধান। 122 থেকে বুঝেছি ব্যবহার " ".join(..)বরং দৌড়ে.format
akozi

1
i%2*c or' 'আরও কয়েকটি বাইট সংরক্ষণ করে, যদিও আমি লক্ষ্য করেছি যে বিজোড় দৈর্ঘ্যের রাস্তাগুলির জন্য পৃথককারীটি ভুল।
নীল

2

পাইথন 2 , 93 বাইট

n,d=input();p=''
while n:g='|/\\'[d];n-=1;print['',' '*n,p][d]+g+' %s '%(g,' ')[n%2]+g;p+=' '

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


2 বাইট সংরক্ষণ করে পরিবর্তন +' %s '+করা হচ্ছে,'%s',
টিফিল্ড

@ টিফিল্ড সেক্ষেত্রে আপনি '%s'%পুরোপুরি সরিয়ে ফেলতে পারেন ।
নীল


2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 129 107 103 93 বাইট

a=>b=>{for(char i=a,W="/|\\"[b+1];i>0;)Write("{0,"+(a-i*b+5)+"} {1} {0}\n",W,--i%2<1?W:' ');}

উত্তর-পূর্বের জন্য -1, উত্তর-পশ্চিমের জন্য 1, উত্তরের জন্য 0

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




1

সুইফট 4.2 , 112 108 বাইট

-4 বাইট শ্রোতাচিলিজম ও'জাইককে ধন্যবাদ

let c=["\\","|","/"][d];(0..<n).map{print((0..<n-$0*(d-1)).map{_ in" "}.joined()+c+" \($0%2==0 ?c:" ") "+c)}

[-1,0,1] এর পরিবর্তে [0,1,2]।

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

ব্যাখ্যা

let c=["\\","|","/"][d]

ব্যবহারের জন্য রাস্তার চিহ্নটি নির্ধারণ করে। (আমি বাজি ধরছি এটিকে কোনওভাবে ছোট করা যায়)

(0..<n).map{

রাস্তার দৈর্ঘ্যের উপর দিয়ে আইট্রেটস।

(0..<n-$0*(d-1)).map{_ in" "}.joined()

রাস্তার সামনের জায়গাগুলি যুক্ত করে।

\($0%2==0 ?c:" ")"

প্রতিটি অন্যান্য লাইনে মাঝের চিহ্নটি যুক্ত করে।

আমার প্রথম এক - আমি কোনও অপ্টিমাইজেশন পরামর্শ সম্পর্কে খুশি। মূলত সেই থ্রেড থেকে শিখেছি: সুইফটে গল্ফ করার টিপস


1
সাইটে স্বাগতম! দেখে মনে হচ্ছে আপনি নিজের কোডের মধ্যে inএবং " "আপনার কোডের মধ্যে স্থানটি সরিয়ে দিতে ভুলে গেছেন যদিও আপনি এটি উদাহরণগুলিতে সরিয়ে ফেলেছেন।
গম উইজার্ড

1
আমি দ্রুত জানি না তবে এটি স্ট্রিংগুলির শেষ ( \(c)উভয় ক্ষেত্রে) এর প্রান্তে আপনার অন্তরঙ্গগুলির মতো মনে হচ্ছে । আপনি কেবল cস্ট্রিংটিতে সংক্ষেপ করে বাইটগুলি সংরক্ষণ করবেন । এটি অনলাইন চেষ্টা করুন!
গম উইজার্ড

1
ধন্যবাদ, আপনি ঠিক বলেছেন! আমাদের 3 বাইট saved
প্লেমে

1

পার্ল 6 , 66 বাইট

->\n,\d{{(' 'x--$ *d%-+^n~(' ',<\ | />[d+1])[1,(n+$++)%2,1])xx n}}

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

লাইনের একটি তালিকা ফেরত দেয়।

ব্যাখ্যা

->\n,\d{                                                         }  # Block taking n, d
        {                                                       }   # Reset $ variables
         (                                                 )xx n    # Repeat n times
          ' 'x  # Space times
              --$ *d  # (-1,-2,-3,...) if d=1
                      # (0,0,0,...) if d=0
                      # (1,2,3,...) if d=-1
                    %-+^n  # modulo -~n = n+1
                         ~  # Concat
                          (' ',<\ | />[d+1])  # Space or line
                                            [1,(n+$++)%2,1]  # Alternate middle char

1

রুবি , 90 বাইট

n,a=*$*.map{|i|-i.to_i}
c='|\/'[a]
n.upto(-1){|i|puts' '*(i*a-n)+c+' '+[' ',c][i%2]+' '+c}

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

আপডেট: কেভিন, আপনাকে দেখানোর জন্য ধন্যবাদ যে আমার মূল জমাটি রাস্তার কিনারা এবং চিহ্নিতকারীগুলির মধ্যে স্থানগুলি হারিয়েছে (অর্থাত্, 5-প্রস্থের পরিবর্তে 3-প্রস্থের রাস্তা।) এটি বলেছে, এর চেয়ে সংক্ষিপ্ত স্থিরতা থাকতে পারে c+' '+...+' '+c

দিকনির্দেশক তথ্য: -1, 0, 1মানচিত্র{ north-west, north, north-east }

যুক্তিগুলি: এটি কমান্ড-লাইন যুক্তিগুলি পড়ায় যেমন 4 -1(একটি চার সারির রাস্তা, উত্তর-পশ্চিমে স্লেটেড)।

অতিরিক্ত দ্রষ্টব্য: এটি রুবি v2.6.1 এর সাথে স্থানীয়ভাবে পরীক্ষা করা হয়েছিল এবং দেখা যাচ্ছে এটি চেষ্টা করুন অনলাইন রুবি ভি 2.5.5 ব্যবহার করে। এটি অন্য সমস্ত রুবি সংস্করণে কাজ করবে না ভাবার কোনও কারণ নেই।


হাই, পিপিসিজিতে আপনাকে স্বাগতম! দিকনির্দেশ এবং পরিবর্তনকারী রাস্তাগুলি আপনার আউটপুটে সঠিক, তাই খুব ভাল। মাত্র এক বর্তমান আউটপুটে ছোটখাট ত্রুটি আছে: রাস্তা তিন স্পেস পরিবর্তে ওয়াইড 1. বর্তমানে আপনার রাস্তা হওয়া উচিত |||বা |<sp>|, কিন্তু এটি হওয়া উচিত |<sp>|<sp>|বা |<sp><sp><sp>|(যেখানে <sp>একটি স্থান)। আমি রুবি জানি না, তবে এটি আপনাকে পরিবর্তন করে এটিকে সমাধান করতে পারে বলে মনে হয় c+[' ',c][i%2]+cকরতে c+' '+[' ',c][i%2]+' '+c। :)
কেভিন ক্রুইজসেন

আহ ভাল ধরা! এটি নির্দেশ করার জন্য ধন্যবাদ, কেভিন ক্রুজসেন।
স্পেন্সার ডি

1

জাভা (জেডিকে) , 116 বাইট

d->n->{for(int c="\\|/".charAt(d),i=n;i-->0;)System.out.printf("%"+(d<1?n-i:d>1?i+1:1)+"c%2c %c%n",c,i%2<1?c:32,c);}

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

লাগে dএক হিসাবে 0, 1বা 2


108 বাইট উত্তর-পশ্চিমের জন্য ইনপুট নেয় -1, উত্তর-পূর্বের জন্য 1 এবং উত্তর দিকে 0।
অজ্ঞতার মূর্ত প্রতীক

1

জাপট -R , 40 বাইট

Æ=Vg"|\\/";²i1S+iX%2?S:U)iSp[TZÊ-YY]gVÃw

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

ব্যাখ্যা:

Æ=Vg"|\\/";²i1S+iX%2?S:U)iSp[TZÊ-YY]gVÃw
                                            // U = road size
                                            // V = direction
Æ                                     Ã     // Loop X through [0...U]
 =        ;                                 //   Set U to:
    "|\\/"                                  //       "|\/"
  Vg                                        //            [V]
           ²                                //  Double U
            i1          )                   //  Insert at index 1:
              S+                            //    " " +
                 X%2?S:U                    //         X%2?" ":U
                i                           //                  + " "
                         i                  //  Insert at index 0:
                          Sp                //    " " repeated this many times:
                            [TZÊ-YY]        //      [0,U.length - X,X]
                                    gV      //                        [V]
                                        w   // Reverse output

আউটপুটটিতে একটি ছোটখাটো ভুল আছে বলে মনে হচ্ছে। বর্তমানে এমনকি ইনপুটগুলির জন্য রাস্তা বিভাজক নীচের পরিবর্তে শীর্ষে শুরু হয়। অন্য সবকিছু ঠিক আছে, তাই আমি আশা করি এটি ঠিক করা খুব কঠিন নয়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আহ, এটি ধরার জন্য ধন্যবাদ। আমি আমার উত্তর আপডেট করার আগে, আপনি কি এই সমাধানটি ঠিক আছে তা নিশ্চিত করতে পারেন ?
অলিভার

হ্যাঁ, এটি সম্পূর্ণ সঠিক দেখাচ্ছে। :)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন একটি ব্যাখ্যা যুক্ত করেছেন যেহেতু আমি জানি যে আপনি তাদের পছন্দ করেছেন: পি
অলিভার

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

1

স্ট্যাক্স , 23 বাইট

ù╒←∩♂2Ωⁿ¡├∩22♀Ç○=÷â╧δÖ↑

এটি চালান এবং এটি ডিবাগ করুন

ইনপুট দুটি স্পেস দ্বারা পৃথক দুটি পূর্ণসংখ্যা।
প্রথমটি d। -1 উত্তর-পূর্ব নির্দিষ্ট করে। 0 উত্তরের জন্য। উত্তর-পশ্চিমের জন্য 1। দ্বিতীয় প্যারামিটারটি n। এই দুটি মান ইনপুট থেকে স্পষ্টভাবে বিশ্লেষণ করা হবে এবং nউপরের সাথে ইনপুট স্ট্যাকের উপর স্থাপন করা হবে । অতিরিক্তভাবে dস্ট্যাকস থেকে অ্যাক্সেসযোগ্য হবেx নিবন্ধ থেকে যেহেতু এটি প্রথম পার্স করা মান।

উদাহরণস্বরূপ, ইনপুট "1 7"

            Main stack      Explanation
            ----------      -----------
;           [7]             peek from input stack
m                           map over integers [1..n] using the rest of the program
                            output each produced value implicitly
  ;         [1 7]           peek from input stack
  +         [8]             add
  .*"       [8 [42 34]]     2 character string literal with codepoints 42 and 34
  @         [42]            get the element at the specified modular index (8)
  0         [42 0]          literal zero
  "|\/"x@   [42 0 92]       get codepoint from string literal at input d (from x register)
  \         [42 [0 92]]     make pair
  :B        ['\ \ \ ']      encode in custom base; it's binary with custom codepoints
  _x*       ['\ \ \ ' 1]    (loop variable) * (input d)
  ;^        ['\ \ \ ' 1 8]  peek from input stack and increment
  %         ['\ \ \ ' 1]    modulus
  6+        ['\ \ \ ' 7]    add 6
  )         [' \ \ \ ']     left-pad to length

এটি চালান


আপনি একটি ব্যাখ্যা যোগ করতে আপত্তি হবে? :)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন: মোটেও নয়।
পুনরাবৃত্তি

0

পার্ল -M5.010 -Mfeature = স্বাক্ষর, 97 বাইট

sub f($n,$d){$x=qw[| / \\][$d];say" "x($d<1?$_*-$d:$n-$_),$x,$",($n-$_)%2?$":$x,$",$x for 1..$n;}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.