সামনে রোড পেইন্টিং


12

দুটি প্যারামিটার লেনের প্যাটার্ন এবং রাস্তার দৈর্ঘ্য দেওয়া , রাস্তাগুলি আঁকার জন্য রাস্তা এবং ট্র্যাফিক সার্ভিসের লেন চিহ্নগুলির একটি ASCII উপস্থাপনা মুদ্রণ করুন।

উদাহরণ ইনপুট / আউটপুট

ইনপুট:, BTHMLRPHU 21

আপনি দুটি প্যারামিটার নিয়েছেন বা স্ট্রিংয়ের শেষে সংখ্যাটি একত্রিত করে রাখেন কিনা তা আমার খেয়াল নেই it's

ইনপুটটি স্টিডিএন থেকে নেওয়া যেতে পারে, একটি ফাংশন আর্গুমেন্ট হিসাবে, পরিবেশের ভেরিয়েবলগুলি, আপনার ভাষায় যা কিছু বোঝায়।

আউটপুট:

!   |      x      ##      |      |      x      x      !
! B |  /\  x HOV3 ##  <-  |  ->  |  ^^  x HOV3 x      !
! B |  \/  x HOV3 ##   |  |  |   |  ^^  x HOV3 x      !
!   |      x      ##      |      |      x      x      !
!   |      x      ##      |      |      x      x      !
!   |      |      ##      |      |      |      |      !
!   |      |      ##      |      |      |      |      !
!   |      |      ##      |      |      |      |      !
! B |  /\  | HOV3 ##  <-  |  ->  |  ^^  | HOV3 |      !
! B |  \/  | HOV3 ##   |  |  |   |  ^^  | HOV3 |      !
!   |      x      ##      |      |      x      x      !
! B |  /\  x HOV3 ##  <-  |  ->  |  ^^  x HOV3 x      !
! B |  \/  x HOV3 ##   |  |  |   |  ^^  x HOV3 x      !
!   |      x      ##      |      |      x      x      !
!   |      x      ##      |      |      x      x      !
!   |      |      ##      |      |      |      |      !
!   |      |      ##      |      |      |      |      !
!   |      |      ##      |      |      |      |      !
! B |  /\  | HOV3 ##  <-  |  ->  |  ^^  | HOV3 |      !
! B |  \/  | HOV3 ##   |  |  |   |  ^^  | HOV3 |      !
!   |      x      ##      |      |      x      x      !

প্রতিটি অক্ষর প্রস্থে 0.5 মিটার এবং দৈর্ঘ্যে এক কিলোমিটার নির্দেশ করে।

সবিস্তার বিবরণী

লেনের চিহ্নগুলি

প্রতি 10 কিলোমিটার রাস্তার জন্য, চিহ্নগুলি 2, 3, 9 এবং 10 কিলোমিটারে (আউটপুটটির "শীর্ষ" থেকে) আঁকা হয়। চিহ্নগুলি লেনকে কেন্দ্র করে। বাইক লেন এবং মিডিয়ান বাদে সমস্ত লেনগুলি 3 মিটার (6 অক্ষর) প্রশস্ত।

উদাহরণের আউটপুটে উল্লিখিত চিহ্নগুলির পরিবর্তে ASCII হীরা এবং তীর অক্ষরের অনুমতি নেই not

  • B: সাইকেল গলি. Bচিহ্নিত করার। 1.5 মিটার (3 অক্ষর) প্রশস্ত।
  • T: ট্রানজিট হীরা চিহ্নিত করা
  • H: উচ্চ-দখল যানবাহনের লেন। HOV3অবস্থানসূচক
  • Lএবং R: গলি বাঁক। তীর চিহ্ন
  • P: পাসিং গলি ক্যারেট চিহ্নস
  • U: সীমাবদ্ধ লেন। কোন চিহ্ন নেই

বিভাজক (অগ্রাধিকার ক্রমে)

  • মিডিয়ান: ##( Mইনপুট স্ট্রিং দ্বারা চিহ্নিত , খাদ সহ অন্য কোনও বিভাজক প্রতিস্থাপন করে)
  • খাদের (চরম বাম এবং চরম ডান): !বিস্মৃত চিহ্ন
  • এইচওভি লেনগুলি বিকল্প xএবং |প্রতি 5 কিলোমিটারের মধ্যে বিকল্প
  • সাধারন: |

সীমাবদ্ধতাসমূহ

আপনার ফাংশন বা প্রোগ্রাম অবশ্যই:

  • STDOUT এ মুদ্রণ করুন (এর অর্থ System.out.printজাভা, console.logজাভাস্ক্রিপ্টের জন্য সমতুল্য )
  • 0 - 10 মিডিয়ান সহ 1 - 9 লেন মুদ্রণ করতে সক্ষম হন
  • 50 কিলোমিটার রোডওয়ে (আউটপুট 50 লাইন) মুদ্রণ করতে সক্ষম হবেন
  • কোনও মানক লুফোল ব্যবহার করবেন না
  • \nআউটপুট শেষে alচ্ছিক ব্যতীত সাদা স্থান অনুসরণ করা গ্রহণযোগ্য নয়

বৃহত্তম সম্ভাব্য আউটপুট: 3700 বাইট (74 টি অক্ষর * 50 লাইন)।

ক্ষুদ্রতম সম্ভব আউটপুট: 5 বাইট (ইনপুট সহ B, 1)

অনুমিতি

  • কোনও সংলগ্ন মিডিয়ান নেই (সাবস্ট্রিংটি MMঘটবে না)
  • চিহ্নগুলির দ্বিতীয় লাইনটি কেটে যেতে পারে (উদাহরণস্বরূপ দৈর্ঘ্য 9 বা 12 কিমি হলে)
  • লেনগুলি যুক্তিসঙ্গতভাবে অর্থবোধ করতে পারে না (কোনও অর্ডার সম্ভব, উদাহরণস্বরূপ রাস্তার বাম দিকে ডানদিকে ঘুরুন)

এটি , তাই সংক্ষিপ্ততম কোড (বাইটে) জয়!


1
এবং সেখানে, আপনি
মনসপ্যাসেড

উত্তর:


4

রুবি, 245

প্রাসঙ্গিক হলে লেন বিভাজক মুদ্রণ করুন, তারপর লেনটি মুদ্রণ করুন।

আমি জয়ের আশা করি না

->(n,i){i.times{|d,t|*e=''
g=e+%w{HOV3 ^^ B}
n.chars{|c|$><<(c==?M?'##':!t ??!:(t+c)[?H]&&d%10<5??x:?|)if(M=t!=?M)
$><<((e+[(%w{/\\ <- ->}+g)[v='TLRUHPB'.index(c)],(%w{\\/ \ | |\ }+g)[v]]+e*4)*2)[d%10].center(v>5?3:6)if(t=c)!=?M}
puts M ? e:?!}}

পরিবর্তণের

245 স্টোকার স্টোকার এবং স্প্লিট অ্যারে কার্যকরভাবে কার্যকর করুন।

263 সূচক অ্যারে আরও ভাল উপায়

268 কেবল প্রতিটি লাইন মুদ্রণ করুন, কোনও প্রমিত সংস্করণ গণনা করবেন না।

330 প্রাথমিক প্রতিশ্রুতি


আমি রুবিকেও জিততে পারব না তবে পরের সপ্তাহের মধ্যে যদি অন্য কোনও উত্তর না পাওয়া যায় তবে আমার ধারণা আপনি জিতবেন :-P দ্বিতীয় নোটে কোথাও কি আমার কম্পিউটারে রুবিকে ইনস্টল না করে পরীক্ষা করতে পারি?
rink.attendant.6


2

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

f=(x,n)=>{for(i=0;n>i++;){b=!(r=i%10)|r==3;y=[...`! ${[...x].join` | `} !`[o='replace'](/[\W] ?M [\W]?/g,'##')].map(c=>~(q='LPRTU'.indexOf(c))?` ${'<- |^^^^->| /\\\\/    '.substr(4*q+2*b,2)} `:c=='H'?'HOV3':c).join``;y=r&&r<6?y[o](/\| H/g,'x H')[o](/3 \|/g,'3 x'):y;console.log(b|r==2|r==9?y:y[o](/[^!\|x#]/g,' '))}}

ডেমো

এটি লেখার সময় ফায়ারফক্স এবং এজে কাজ করা উচিত, ক্রোম / অপেরাতে পরীক্ষামূলক বৈশিষ্ট্য সক্ষম করার প্রয়োজন হয়।

console.log = x => O.innerHTML += x + '\n';

f = (x, n) => {
  for (i = 0; n > i++;) {
    b = !(r = i % 10) | r == 3;
    y = [...
      `! ${[...x].join` | `} !` [o = 'replace'](/[\W] ?M [\W]?/g, '##')
    ].map(c => ~(q = 'LPRTU'.indexOf(c)) ? ` ${'<- |^^^^->| /\\\\/    '.substr(4*q+2*b,2)} ` : c == 'H' ? 'HOV3' : c).join ``;
    y = r && r < 6 ? y[o](/\| H/g, 'x H')[o](/3 \|/g, '3 x') : y;
    console.log(b | r == 2 | r == 9 ? y : y[o](/[^!\|x#]/g, ' '))
  }
}

// Snippet stuff
var demo = () => {
  O.innerHTML = '';
  document.forms[0].checkValidity() && f(document.getElementById('P').value, document.getElementById('N').valueAsNumber);
};

document.getElementById('P').addEventListener('change', demo);
document.getElementById('N').addEventListener('change', demo);

demo();
<form action='#'>
  <p>
    <label>Lane pattern:
      <input type=text pattern=^M?([BHLPRTU]M?)+$ maxlength=19 required id=P value=MLTPUMHUTBR>
    </label>
  </p>
  <p>
    <label>Kilometres:
      <input type=number id=N min=1 value=21 max=50 step=1 required>
    </label>
  </p>
  <pre><output id=O></output></pre>
</form>


1

05 এ বি 1 ই , 175 174 175 বাইট

ðTиDU'|TиX'BŽ5ES©ǝX„\/TbSDVè®ǝ€ºX4×"HOV3"®ǝX'<18SǝX„|-Yè®ǝøJDí'<'>:X'^®ǝ2×'#Tи2×'x5и'|5и«'!Tи)I.•o¤[‹‡•uŽDýSтì€ûŽe1ª904ûª8ª₄«ª‡•δ~¬]•2ôDí«Ž
ÿT∍S:ð.ø8ðì‚8:1ðì‚ð:SðT:èεI∍}øJ»

খুব খারাপ দৃষ্টিভঙ্গি, তবে এটি কাজ করে এবং মজাদার হয়। অবশ্যই আরও কিছু গল্ফ করা যেতে পারে, যদিও।

সংলগ্ন দুটি HHলেনের জন্য বাগ-ফিক্স হিসাবে +1 বাইট ।

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

ব্যাখ্যা:

পদক্ষেপ 1: আকার 10 সহ সমস্ত সম্ভাব্য লেন তৈরি করুন:

ðTи               # Push a space character, repeated 10 times as list
   DU             # And store a copy in variable `X`
'|Tи             '# Push "|", repeated 10 times as list
X                 # Push the list of spaces of variable `X`
 'B              '# Push a "B"
   Ž5E            # Push compressed integer 1289
      S           # Converted to a list of digits: [1,2,8,9]
       ©          # Store it in variable `®` (without popping)
        ǝ         # Replace the spaces in the pushed `X` with the "B" at these (0-based)
                  # indices
X                 # Push `X` again
 \/              # Push string "\/"
    TbS           # Push 10, converted to binary, as list: [1,0,1,0]
       DV         # Store a copy in variable `Y`
         è        # Index each into this string: ["/","\","/","\"]
          ®       # Push list `®` again ([1,2,8,9])
           ǝ      # And replace the spaces with these characters
            €º    # And then mirror each line (" "→"  "; "/"→"/\"; "\"→"\/")
X                 # Push `X` again
 4×               # Extend each space to four spaces
   "HOV3"         # Push string "HOV3"
         ®ǝ       # And replace the spaces with this string at the indices of `®` again
X                 # Push `X` again
 '<              '# Push string "<"
   18S            # Push 18 as list: [1,8]
      ǝ           # Replace the spaces with "<" at those indices
       X          # Push `X` yet again
        „-|       # Push string "-|"
           Yè     # Use list `Y` ([1,0,1,0]) to index into this string: ["-","|","-","|"]
             ®ǝ   # And replace the spaces at the indices of `®` again
               ø  # Then zip-pair the two lists together
                J # And join each pair of characters to a string
Dí                # Create a copy and reverse each string
  '<'>:           # And replace all "<" with ">"
X'^®ǝ            '# Push `X` with the spaces at indices `®` replaced with "^" 
     2×           # Extend each character to size 2
'#Tи             '# Push "#", repeated 10 times as list
    2×            # And extend each character to size 2
'x5и             '# Push "x" repeated 5 times as list
    '|5и         '# Push "|" repeated 5 times as list
        «         # And merge the lists together
'!Tи             '# Push "!", repeated 10 times as list
)                 # And finally wrap all lists of the stack into one big list of lanes

পদক্ষেপ 2: ইনপুট-স্ট্রিংকে সূচকে রূপান্তর করুন (যা আমরা পদক্ষেপ 1-এ তৈরি করা তালিকার সূচীতে ব্যবহার করতে যাচ্ছি):

I                 # Push the input-string
 .•o¤[‹‡•         # Push compressed string "tlrpbhmu"
         u        # And uppercase it
ŽDý               # Push compressed integer 3567
   S              # Converted to a list of digits: [3,5,6,7]
    тì            # Prepend each with "100": ["1003","1005","1006","1007"]
      €û          # And palindromize each: ["1003001","1005001","1006001","1007001"]
Že1               # Push compressed integer 10201
   ª              # And append it to the list
904ûª             # Push 904 palindromized to "90409", and also append it to the list
8ª                # Append 8 to the list
₄Â                # Push 1000, and bifurcate it (short for Duplicate & Reverse copy)
  «               # Merge them together: "10000001"
   ª              # And also append it to the list
                 # Now transliterate all uppercase characters in the input to these numbers
•δ~¬]•            # Push compressed integer 1119188999
      2ô          # Split into parts of size 2: [11,19,18,89,99]
        Dí        # Create a copy, and reverse each item: [11,91,81,98,99]
          «       # And merge the lists together: [11,19,18,89,99,11,91,81,98,99]
Ž\nÿ              # Push compressed integer 19889
    T            # Extended to size 10: 1988919889
      S           # As a list of digits: [1,9,8,8,9,1,9,8,8,9]
:                 # Replace all [11,19,18,89,99,11,91,81,98,99] with [1,9,8,8,9,1,9,8,8,9]
                  # in the converted string
ð.ø               # Surround the string with spaces
8ðì               # Push 8 with a prepended space: " 8"
   ‚             # Bifurcate and pair: [" 8","8 "]
     8:           # And replace all those for 8 in the string
1ðì‚ð:           # Do the same for [" 1","1 "] → " "
S                 # Convert the string to a list of characters (digits and space)
 ðT:              # Replace the spaces for 10

পদক্ষেপ 3: আমরা সেই সূচকগুলি লেনের তালিকায় সূচকে ব্যবহার করি। এবং তারপরে আমরা সেই লেনগুলির তালিকাটিকে আউটপুট-ইনপুট আকারে প্রসারিত / সংক্ষিপ্তকরণ সহ সঠিক আউটপুটে রূপান্তর করি:

è                 # Index the indices in the integer-list into the lanes-list
 ε                # Map over each lane
  I               #  Push the second integer-input
                 #  Extend/shorten each 10-sized lane to this input-size
                # After the map: zip/transpose; swapping rows/columns
   J              # Join inner list together to a single string
    »             # And then join each string by newlines
                  # (after which the result is output implicitly)

আমার এই 05AB1E টিপটি দেখুন (বিভাগগুলি কীভাবে স্ট্রিংগুলি সংকুচিত করবেন? এবং বড় সংখ্যার সংকোচন কীভাবে করবেন? ) কেন Ž5Eতা বোঝার জন্য 1289; .•o¤[‹‡•হয় "tlrpbhmu"; ŽDýহয় 10201; •δ~¬]•হয় 1119188999; Ž\nÿহয় 19889

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