অনুকূল ক্রুজ নিয়ন্ত্রণ বিকল্পগুলি নির্ধারণ করুন


10

আপনি যে গতিটি চালনা করতে চান তা সেট করতে হ্যান্ডেলটি সরানোর জন্য ক্রুজ কন্ট্রোলের 3 টি আলাদা বিকল্প রয়েছে।

  • আপনার দিকে: 1 গতি যুক্ত করে।
  • উপরের দিকে: 10 এর পরবর্তী একাধিকের গতি বৃদ্ধি করে (যেমন 20 -> 30, 32 -> 40)
  • নিম্নমুখী: 10 এর পরবর্তী একাধিকের গতি হ্রাস (যেমন 20 -> 10, 32 -> 30)

ইনপুট

  • 2 পূর্ণসংখ্যা: প্রথমটি হ'ল প্রারম্ভিক গতি এবং দ্বিতীয়টি হ'ল আপনার পছন্দসই গতি, উভয়ই নেতিবাচক এবং কোনও আকারে আপনার পছন্দ হয় (অ্যারে, দুটি আর্গুমেন্ট, ইত্যাদি)

কার্য

  • পছন্দসই গতিতে পৌঁছানোর জন্য হ্যান্ডেলটি ব্যবহারের সর্বোত্তম উপায়টি নির্ধারণ করুন এবং সঠিক ক্রমে চালগুলি মুদ্রণ করুন।

বিধি

  • আপনার দিকে টানতে এবং উপরের দিকে যাওয়ার মধ্যে যদি আপনার পছন্দ হয় (যেমন 39 থেকে 40 পর্যন্ত) আপনি যে কোনও বিকল্প বেছে নিতে পারেন, তবে আপনি একই জাতীয় ক্ষেত্রে যা পছন্দ করেন তার সাথেই থাকুন
  • আউটপুট (টি, ইউ এবং ডি উদাহরণস্বরূপ) এর চালগুলির মধ্যে পার্থক্য করতে আপনি যে কোনও 3 টি পৃথক (সর্বাধিক দৃশ্যমান) চিহ্ন ব্যবহার করতে পারেন।
  • চিহ্নগুলি নতুন লাইন, স্পেস ইত্যাদির দ্বারা পৃথক করা যেতে পারে তবে এমনটি হবে না

এখানে কিছু পরীক্ষার মামলা রয়েছে:

start speed, desired speed  -->  output
30, 40  -->  U
30, 43  -->  UTTT
43, 30  -->  DD
51, 39  -->  DDDTTTTTTTTT
29, 30  -->  T or U
29, 50  -->  TUU or UUU
12, 12  -->  

এটি তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর w


যে কারও অবাক হওয়ার জন্য, আজ আমি লক্ষ্য করেছি যে আমার ক্রুজ কন্ট্রোলটিতে আসলে গতি হ্রাস করার জন্য একটি "লুকানো" বোতামটি রয়েছে 1 দিয়ে আমি পুরো সময় ভুল চালাচ্ছিলাম ...
#TastyT0ast

উত্তর:


1

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

@ নীলকে ধন্যবাদ 4 বাইট সংরক্ষিত

f=(s,d)=>s-d?(q=s+10-s%10)>d?s>d?0+f(s-(s%10||10),d):1+f(s+1,d):2+f(q,d):""

ব্যবহার 0জন্য D, 1জন্য T, এবং 2জন্য U


(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
নীল

1
@ নীল ধন্যবাদ, এটি অন্য একটি জায়গায়ও সহায়তা করে!
ETH প্রোডাকশনগুলি

আপনি f(37,43)যা ভেঙেছিলেন তা 2111কিন্তু আপনার নতুন কোড রিটার্ন দেয় 111111
নিল

@ নীল 2 বাইট ব্যয়ে স্থির
ETH প্রোডাকশনগুলি

1

জাভা, 144 139

কেভিনকে ধন্যবাদ 5 বাইট সংরক্ষিত

void o(int s,int e){int t=10,x=s/t;System.out.print(s>e?"D":s<e?x<e/t?"U":"T":"");if‌​(s!=e)o(s>e?x*t-(s%t‌​<1?t:0):s<e?x<e/t?(x‌​+1)*t:s+1:0,e);

Ungolfed

public static void optimalCruise(int start, int end){

    if(start > end) {
        System.out.print("D");
        optimalCruise(start/10*10-(start%10<1?10:0), end);
    } else if(start < end){
        if(start/10 < end/10){
            System.out.print("U");
            optimalCruise(((start/10)+1)*10, end);
        } else {
            System.out.print("T");
            optimalCruise(start+1, end);
        }
    }
}

এর intজন্য দুটি ভেরিয়েবল তৈরি করে 10এবং s/10আপনি এটি 5 বাইট দ্বারা সংক্ষিপ্ত করতে পারেন:void o(int s,int e){int t=10,x=s/t;System.out.print(s>e?"D":s<e?x<e/t?"U":"T":"");if(s!=e)o(s>e?x*t-(s%t<1?t:0):s<e?x<e/t?(x+1)*t:s+1:0,e);
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন ভাল ক্যাচ, আমি এটি সম্পাদনা করব
dpa97

0

ব্যাচ, 175 বাইট

@set/as=%1,d=%2,e=d/10*10
:d
@if %s% gtr %d% echo d&set/as=~-s/10*10&goto d
:u
@if %s% lss %e% echo u&set/as=s/10*10+10&goto u
:t
@if %s% neq %d% echo t&set/as+=1&goto t

মোটামুটি সোজা এবার। কমান্ড-লাইন প্যারামিটার হিসাবে ইনপুট নেয়, যা এটিতে sএবং সংরক্ষণ করে deহয় d10. যদি পূর্ববর্তী একাধিক বৃত্তাকার নিচে sচেয়ে বেশী dতারপর আমরা স্পষ্টত ডাকা করতে হবে, dযতক্ষণ না sচেয়ে কম হয়ে যায় d। অন্যথায়, আমাদের যাচাই করা উচিতs চেয়ে কমe ; যদি তাই হয় তবে আমরা সমান uহওয়া পর্যন্ত প্রার্থনা করতে পারি । এই মুহুর্তে এখন এবং এর মধ্যে এবং আমরা পৌঁছানো অবধি সহজভাবে প্রার্থনা করতে পারি । আমি লুপগুলিতে সন্ধান করেছি তবে তারা অন্তর্ভুক্তিমূলক শেষ পয়েন্টগুলি ব্যবহার করে তাই খুব ভার্জোজ হয়ে উঠত।sesedtdfor



0

সি, 156 বাইট

t,x,y;main(int s,char**a){x=(s=atoi(a[1]))/10,y=(t=atoi(a[2]))/10;if(s^t){for(;y>x;++x)puts("U");for(x+=(s-t>10);x>y;--x)puts("D");for(;t--%10;)puts("T");}}

Ungolfed:

#include <stdio.h>
#include <stdlib.h>
int t, x, y;
int main(int s, char **a)
{
    x = (s = atoi(a[1])) / 10,
    y = (t = atoi(a[2])) / 10;

    if (s ^ t) {
        for ( ; y > x; ++x)
            puts("U");

        for (x += (s - t > 10) ; x > y; --x)
            puts("D");

        for ( ; t-- % 10; )
            puts("T");
    }
    return 0;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.