সময় নির্ধারণ


27

নিম্নলিখিত 24-ঘন্টা ঘড়ির কল্পনা করুন যা তীর কী দ্বারা নিয়ন্ত্রণ করা যেতে পারে:

╔══╗ ┌──┐
║00║:│00│
╚══╝ └──┘
 HH   mm

দুবার উপরের তীর টিপলে ↑↑বর্তমানে ফোকাস হওয়া ঘন্টা ইনপুট বাড়বে:

╔══╗ ┌──┐
║02║:│00│
╚══╝ └──┘
 HH   mm

ডান তীর ( ) টিপলে অন্য ইনপুটটি ফোকাস হবে।

┌──┐ ╔══╗
│02│:║00║
└──┘ ╚══╝
 HH   mm

তিনবার ডাউন তীর টিপলে ↓↓↓এখন এই ইনপুটটি হ্রাস পাবে।

┌──┐ ╔══╗
│02│:║57║
└──┘ ╚══╝
 HH   mm

সংক্ষেপে বলা:

  • আপ অ্যারো ( ) বর্তমানে সক্রিয় ইনপুটটিকে বাড়িয়ে তুলবে।
  • ডাউন তীর ( ) সক্রিয় ইনপুট হ্রাস করবে।
  • ডান তীর ( ) ডান ইনপুটটিতে ফোকাস স্থানান্তরিত করবে।
  • বাম তীর ( ) বাম ইনপুটটিতে ফোকাস স্থানান্তরিত করবে।
  • একটি সময়ের ইনপুট হিসাবে প্রত্যাশার সাথে সাথে উপরে এবং ডাউন চলাচল প্রায় লুপ হয়ে যাবে।
  • বাম এবং ডান চলাচল কাছাকাছি লুপ না।

চ্যালেঞ্জ

ঘড়িটি 00:00ঘন্টা ইনপুট সক্রিয় হওয়ার সাথে সাথে শুরু হয় (প্রথম পরিকল্পনামূলক দেখুন)। ইনপুট কমান্ডগুলির একটি তালিকা দেওয়া হয়েছে, ফলে সময়কে HH:mmফর্ম্যাটে আউটপুট দেয় ।
ইনপুট হয় স্ট্রিং বা একটি তালিকা (বা আপনার ভাষার সমতুল্য) হতে পারে, যেখানে বিভিন্ন ইনপুট দিকনির্দেশ নীচের বিকল্পগুলির মধ্যে একটি হতে পারে:

  • ↑↓←→
  • udlr
  • ^v<>
  • আপনার প্রোগ্রামটিতে জিআইআই থাকলে প্রকৃত তীর কী টিপুন

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

পরীক্ষার মামলা

↑↑→↓↓↓ = 02:57
↓→↑←↑→↓ = 00:00
↓→→↓ = 23:59
←←←←→↑ = 00:01
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓→↓ = 23:59

1
@ জোনাথনফ্রেচ প্রদত্ত বিকল্পগুলির মধ্যে একটি, যে কোনও চারটি অনন্য মান নির্বাচন করা (উদাহরণস্বরূপ 0123) অন্যদের উপকার না করার সময় নির্দিষ্ট ভাষায় চ্যালেঞ্জকে অনেক সহজ করে তুলবে।
নিট

1
@ লুইসেলিপডিজেসাস মুনোজ হ্যাঁ, এটি আসলে ইনপুট বিধি অনুসারে লিখিত আছে।
নিট

3
আমি মনে করি এটি যদি সেকেন্ড অন্তর্ভুক্ত করে তবে এটি আরও চ্যালেঞ্জিং হত। এটির পিছনে আরও যুক্তি থাকতে পারে যার পিছনে বর্তমানে একটি ফোকাসে রয়েছে
জো কিং

3
কোনামি কোড হ্যান্ডেল করার জন্য একটি বিশেষ নিয়ম অনুপস্থিত।
coredump

1
@ কর্ড্প্প এটি বিবেচনা করেছেন, তবে বেশিরভাগ ভাষায় উত্তরটির মূল চেয়ে এটি সম্ভবত বেশি জায়গা লাগবে।
নিট

উত্তর:


39

গুগল ক্রোমে এইচটিএমএল Chinese 67 চাইনিজ (সরলীকৃত), 39 বাইট

<input type=time value=00:00 autofocus>

স্ক্রিনশট

ক্রোম বিভিন্ন ভাষায় বিভিন্ন ইউআই উপাদান প্রদর্শন করে। এমনকি একটি সাধারণ সময়ের ইনপুট: আপনি যদি ইংরাজী (ইউএস) ব্যবহার করেন তবে এএম / পিএম দেখানো হবে। আপনি যদি নিজের Chrome এর ভাষা পরিবর্তন করে এটি পরীক্ষা করতে চান। কীভাবে এটি পরিবর্তন করা যায় তা ভরসা করবেন না।


2
dudee !! হাহাহা আমি মনে করি যে এটি বৈধ নয়
লুইস ফিলিপ দে জেসুস মুনোজ

2
ডানদিকে দু'বার আঘাত করা AM/PMআমার কাছে যায়
জো কিং

1
@ জোকিং আমার কি মনে হয় এটি স্থানীয় / সেটিংস নির্ভর?
নিট

1
@ জোকিং এটি লোকাল নির্ভর। আপনার Chrome এর ভাষাটিকে চীনা সরলীকরণে পরিবর্তন করে চেষ্টা করতে পারেন? (কীভাবে এটি পুনরায় পরিবর্তন করবেন তা
ভরসা

1
এটি ফায়ারফক্সে 61.0.1 এ কাজ করে
ফ্রান্সিসকো হ্যান

12

সি (জিসিসি) , 117 107 বাইট

t,i,m[8];e(char*_){for(*m=i=2[m]=0;t=*_++;t<63?i=t%4:(i[m]+=t&8?1:'w'));printf("%02d:%02d",*m%24,2[m]%60);}

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


4
দুর্দান্ত পরিবর্তনশীল নামকরণ।
নিট

# সি (জিসিসি) , 107 বাইট <! - ভাষা-সমস্ত: ল্যাং-সি -> t,i,m[8];e(char*_){for(*m=i=2[m]=0;t=*_++;t<63?i=t%4:(i[m]+=t&8?1:119));printf("%02d:%02d",*m%24,2[m]%60);} এটি অনলাইনে চেষ্টা করুন!
l4m2

6

স্ট্যাক্স , 36 35 33 32 বাইট

áXò↑─↨√▓|êóÇiU&≡Q#┤Æ⌡⌠╟C▐╜√⌡∟▄╩╠

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

ব্যবহার lrud

ব্যাখ্যা:

'l/{'r/Bs$2lmM{${:14-m|+i36*24+%2|zm':* Full program,
'l/                                     Split the string on "l"
   {        m                           Map over the resulting array
    'r/                                   Split at "r"
       B                                  Uncons left, first on TOS (top of stack)
        s                                 Swap to get tail to top
         $                                Flatten; this removes multiple 'r's
          2l                              Listify two items, BOS (bottom of stack) is first element
             M                          Transpose: get [hour commands, minute commands]
              {                    m    Map:
               $                          Flatten
                {    m                    Map over single commands:
                 :1                         Number of set bits: 5 for 'u', 3 for 'd'
                   4-                       Subtract 4: u -> 1, d -> -1
                      |+                  Sum
                        i                 Iteration index: hours -> 0, minutes -> 1
                         36*24+           Multiply by 36, add 24: 0 -> 24, 1 -> 60
                               %          Modulo, this does -5 % 60 = 55
                                2|z       Stringify, left-padding with "0" to length 2
                                    ':* Join on ":"
                                        Implicit output



5

সি # (.নেট কোর) , 149 132 বাইট

s=>{var p=0;int[]h={0,0};foreach(var c in s)h[p=c<63?c/2%2:p]+=c>62?c>95?-1:1:0;return$"{(h[0]%24+24)%24:D2}:{(h[1]%60+60)%60:D2}";}

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

ব্যবহার ^v<>

এটি আমাকে বুঝতে পেরেছিল যে সি # তে থাকা মডুলো অপারেটর প্রত্যাশার মতো কাজ করে না, কারণ সি # তে -1 % 60 = -1, সুতরাং শেষে আমাকে সেই অদ্ভুত অপারেশনটি করতে হবে।


(এইচ [1]% 60 + 60)% 60 (এইচ [1] +60)% 60 দিয়ে প্রতিস্থাপন করা যাবে না?
আইয়ানএফ 1

2
@ আইয়ানএফ 1 না আপনি পারবেন না। যদি ব্যবহারকারী 100 বার ডাউন বোতাম টিপায় তবে কী হবে? নাকি 1000 বার?
চার্লি

স্পষ্ট করার জন্য ধন্যবাদ :) এটি আমার কাছে অবাক করার বিষয় যে ফ্লাইতে মডুলো প্রয়োগের চেয়ে এই পথটি আরও ছোট (-1 এর জায়গায় 59 সহ)।
আইয়ানএফ 1

5

লুয়া (love2d ফ্রেমওয়ার্ক), 311 308 বাইট

l,b,d,t,f,a=love,{24,60},{1,-1},{0,0},1,{"left","right","up","down"}function c(n,i)t[f]=(n+d[i])%b[f]end function l.draw()h,m=t[1],t[2]l.graphics.print((h<10 and 0 ..h or h)..":"..(m<10 and 0 ..m or m),0,0)end function l.keypressed(k)for i,n in pairs(a)do f=k==n and(i>2 and(c(t[f],i-2)or f)or i)or f end end

আনস্রুম্বেবল সংস্করণ:

--initialize all needed values
l,b,d,t,f,a=love,{24,60},{1,-1},{0,0},1,{"left","right","up","down"}

--increase the numbers depending on the focus and up or down
function c(n,i)
  t[f]=(n+d[i])%b[f]
end 

--draw the time to the screen
function l.draw()
  h,m=t[1],t[2]
  l.graphics.print((h<10 and 0 ..h or h)..":"..(m<10 and 0 ..m or m),0,0)
end

--get the keys and check if it is an arrow key
function l.keypressed(k)
  for i,n in pairs(a)do
    f=k==n and(i>2 and(c(t[f],i-2)or f)or i)or f 
  end 
end

সম্ভবত এখনও পড়া 100% সহজ নয় কারণ সমস্ত ifs একটি ট্রাইনারি স্টেটমেন্ট (.. এবং .. বা) এর সাথে বিনিময় হয় :)

যদি প্রেমের সাথে একটি মেইন.লুয়ায় শুরু হয় তবে এটি একটি উইন্ডো পপ আপ করবে এবং আপনি সংখ্যাগুলি পরিবর্তন করতে তীরচিহ্নগুলি টিপতে পারেন



নিশ্চিত, আমি একটি প্রসারিত সংস্করণ কোন সমস্যা :) যোগ
Lycea

4

এমএটিএল , 57 56 55 বাইট

1Oi9\"@5<?y@3-ZS*+}wx7@-X^w]]wx&Zjh24 60h\'%02d:%02d'YD

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

জটিল সংখ্যা ব্যবহার করে ঘন্টা এবং মিনিটের প্রতিনিধিত্ব করে, আসল অংশটি ঘন্টা এবং কাল্পনিক অংশের মিনিট সহ।

মন্তব্য সহ:

1     % Push 1 on the stack
      % represents which timer box we're in, starts at hour box
      % imaginary number j would represent minutes box
O     % Push initial hour and minutes 0+0j
i9\   % Fetch input, mod each character's ASCII value by 9.
      % Gives 4 1 8 6 for ^ v > < respectively
"     % iterate through (modded) input
  @5<?     % Push current input, see if it's < 5 
           % if so, it's an up or down time change
    y        % so copy out the box indicator (1 or j)
    @3-      % Subtract 3 from the current input
    ZS       % Take the result's sign (-1 for v, 1 for ^)
    *        % Multiply indicator with that
    +        % Add the result to the time value
  }        % else, it's a right or left arrow
    wx       % so bring out the box indicator and delete it
    7@-      % Subtract current input from 7. 1 for < and -1 for >
    X^       % Take the square root of that. 1 for < and j for >
    w        % switch stack to bring time value on top again
  ]       % end if
]     % end loop
wx    % bring box indicator out, delete it
&Zj   % split the complex time value to real and imaginary
h     % then concatenate them into an array
24 60h\ % mod hour and minute values by 24 and 60 respectively
'%02d:%02d'YD % sprintf the time array with 0-padding

4

পিএইচপি , 145 134 133 বাইট

(আরও গল্ফিং -11 বাইট)

( দাউদের লুপ পদ্ধতিটি ব্যবহার করে -1 বাইট )

<?for($h=$m=0,$a=h;$c=$argv[++$i];)$c<l?$$a--:($c>r?$$a++:$a=$c<r?h:m);$h%=24;$m%=60;printf('%02d:%02d',$h<0?$h+24:$h,$m<0?$m+60:$m);

এটি চালানোর জন্য:

php -n -d error_reporting=0 <filename> <command_1> <command_2> ... <command_n>

উদাহরণ:

php -n -d error_reporting=0 time_setter.php u u r d d d l d

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

নোট:

  • কিছু বাইট সংরক্ষণ করতে, আমি স্ট্রিং মোড়ক হিসাবে একক / ডাবল উদ্ধৃতি ছাড়াই স্ট্রিং ব্যবহার করেছি। সুতরাং, error_reporting=0বিকল্পটি সতর্কতা আউটপুট না ব্যবহার করতে ব্যবহৃত হয়।
  • ইনপুট আদেশগুলি: u d l r


@ ডেভিড: ধন্যবাদ, তবে আপনার আপডেটের দুটি বিষয় রয়েছে। প্রথমে হ'ল সেট করা হয়নি, তাই এটি শুরুতে হ্রাস ব্যর্থ হয়: অনলাইনে চেষ্টা করে দেখুন!
রাত 2

@ ডেভিড: এবং দ্বিতীয় সমস্যাটি ঘটে যখন আমরা ঘন্টা / মিনিট উপরে বা নিচে 24/60 বারের বেশি পরিবর্তন করি: অনলাইনে চেষ্টা করে দেখুন!
রাত 2

@ ডেভিড: তবে আপনার লুপ পদ্ধতির জন্য ধন্যবাদ, আমি আরও 1 টি বাইট হ্রাস করতে পারলাম: এটি অনলাইনে চেষ্টা করুন!
রাত 2

আহ, ঠিক আছে, দুঃখিত এটি পুরোপুরি কার্যকর হয়নি :)
ডেভিড


3

হাস্কেল, 236 বাইট

f=u 0 0
k _ _ _ _ _ h m[]=z h++':':z m
k a b c d e h m(q:s)=case q of{'^'->e(a h)(b m)s;'v'->e(c h)(d m)s;'>'->v h m s;'<'->u h m s}
u=k(o(+)24)id(o(-)24)id u
v=k id(o(+)60)id(o(-)60)v
o f m x=mod(f x 1)m
z n|n<10='0':show n
z n=show n

fমূল ফাংশন, এবং টাইপ আছে String -> String:

*Main> f "^^>vvv"
"02:57"
*Main> f "v>^<^>v"
"00:00"
*Main> f "v>>v"
"23:59"
*Main> f "<<<<>^"
"00:01"
*Main> f "vvvvvvvvvvvvvvvvvvvvvvvvv>v"
"23:59"

মূলত uএবং vপ্রকারের পারস্পরিক পুনরাবৃত্ত ফাংশন Integer -> Integer -> String -> String। তারা সেটটির উপরে ঘন্টা, মিনিট এবং অক্ষরের একটি তালিকা নেয় {v,^,<,>}এবং সময়ের স্ট্রিংটি দেয়। uকাজ যদি ঘন্টা ডায়াল হাইলাইট হয়ে থাকে যাও recursively আহ্বানের মত গণ্য করো uযদি তালিকার মাথা হয় {v,^}, আর vযদি তালিকার মাথা হয় {<,>}vঅনুরূপ তবে মিনিটের ডায়ালের জন্য।

অন্য সব কিছুই কেবল অক্ষর সংরক্ষণ করে।


3

লুয়া , 132 বাইট

loadstring's,t,m=1,{0,0},{24,60}for c in(...):gmatch"."do t[s]=(t[s]+(("d u"):find(c)or 2)-2)%m[s]s=("lr"):find(c)or s end return t'

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


ব্যাখ্যা

এটি একটি বেনামে ফাংশন (এটির ব্যবহারের উপায়টি লিঙ্কটিতে দেখানো হয়েছে)।

s=1 -- s will control the selection (1 is hour and 2 min)
t={0,0} -- is the time itself
m={24,60} -- is the maximum for each 'box' (hour or min)
-- I've actually used Lua's multiple variable assignment: s,t,m=1,{0,0},{24,60}

for c in (...):gmatch(".") do -- go through each character of the input
  t[s] = (t[s] + (("d u"):find(c) or 2)-2) % m[s] -- set the current 'box' as
          t[s] +   -- itself plus ...
                  ("d u"):find(c) or 2   -- it's index on the string "d u" (that means it's going to be 1 or 3)
                                         -- or 2 if it wasn't found (if the current character doesn't sum or subtract from the box)
                                       -2   -- this adjusts the result 1, 2 or 3 to being -1, 0 or 1
                                            -- making the inputs 'd' and 'u' as -1 and +1 respectively, and an input different from both as 0
         (                               ) % m[s]   -- modulo of the maximum of the selected 'box'

  s=("lr"):find(c) or s
    ("lr"):find(c)   -- if the current input character is l or r, then set 's' (the 'box' selection) to being 1 or 2.
                   or s   -- else let it as is
end
return t -- returns 't', a table with hour and minutes respectively

আউটপুটটি HH:mmকোনও টেবিলের পরিবর্তে ফর্ম্যাটে হওয়া উচিত
জো কিং


2

জেলি , 36 বাইট

আমার বিশ্বাস O%5;4ṣ3œṡ€4Z%3’§§%"“ð<‘DŻ€ṫ€-j”:32 টির জন্য কাজ করা উচিত তবে œṡ বর্তমানে এটিতে একটি বাগ রয়েছে বলে মনে হচ্ছে

O%5;4ṣ3i€4$œṖ"$Z%3’§§%"“ð<‘DŻ€ṫ€-j”:

স্টুডউটে ফলাফল মুদ্রণের একটি সম্পূর্ণ প্রোগ্রাম (একাত্ত্বিক লিঙ্ক হিসাবে এটি আসলে পূর্ণসংখ্যার একক তালিকা (একক অঙ্কের সত্ত্বেও :) এবং অক্ষরগুলির (দ্য ) প্রদান করে।

udlrইনপুট জন্য বিকল্প ব্যবহার করে ।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন

কিভাবে?

O%5;4ṣ3i€4$œṖ"$Z%3’§§%"“ð<‘DŻ€ṫ€-j”: - Link: list of characters (in 'udlr')
O                                    - to ordinals
 %5                                  - modulo five  ...maps u:2, d:0, l:3, r:4
   ;4                                - concatenate a 4 (to always end up with both hrs & mins - even when no r is ever pressed)
     ṣ3                              - split at threes (the l presses)
       i€4$œṖ"$                      - a replacement for œṡ€4 (split each at first occurrence of)...
              $                      - | last two links as a monad:
          $                          - |   last two links as a monad:
         4                           - |     literal four
       i€                            - |     for €ach get first index of (4) else yield 0
             "                       - |   zip with:
           œṖ                        - |     partition at indices
               Z                     - transpose (to get a list of two lists of lists)
                %3                   - modulo by three. To replace any 4(r) with 1
                                     -  ...while keeping any 0(d) as 0, or 2(u) as 2
                  ’                  - decrement. All r are now 0, d are -1 and u are 1
                   §                 - sum each
                    §                - sum each. Now we have the total increase value as
                                     -    ...integers for each of hrs and mins
                       “ð<‘          - code-page indices list = [24,60]
                      "              - zip with:
                     %               -   modulo
                           D         - to decimal lists
                            Ż€       - prepend each with a zero (to cater for values less than ten)
                              ṫ€-    - tail each from index -1. Keeps rightmost two digits of each only)
                                  ”: - literal character ':'
                                 j   - join
                                     - as full program implicit print (smashes the digits and characters together)


2

কিউব্যাসিক , 229 বাইট

একটি স্ক্রিপ্ট যা কনসোলটিতে কীস্ট্রোক এবং আউটপুট হিসাবে ইনপুট নেয়।

দ্রষ্টব্য: টার্মিনালটি "কেবল সিনট্যাক্স হাইলাইট করার জন্য অন্তর্ভুক্ত রয়েছে এবং বাইটকাউন্টে অবদান রাখবে না

z$=CHR$(0)
DO
x=0
y=0
SELECT CASE INKEY$
CASE z$+"K"
r=0
CASE z$+"M"
r=1
CASE z$+"H"
x=1
y=1
CASE z$+"P"
x=23
y=59
END SELECT
IF r THEN m=(m+y)MOD 60ELSE h=(h+x)MOD 24
CLS
?RIGHT$("00000"+LTRIM$(STR$(h*1000+m)),5)
LOCATE 1,3
?":"
LOOP

মন্তব্য

z$=CHR$(0)                                      ''  Set var to null char
DO                                              ''
    x=0                                         ''  Set Hours Shift to 0 
    y=0                                         ''  Set Minutes Shift to 0 
    SELECT CASE INKEY$                          ''  Take keystroke input
        CASE z$+"K"                             ''  If is Left Arrow
            r=0                                 ''    Bool to modify right (minutes) 
        CASE z$+"M"                             ''  If is Right Arrow
            r=1                                 ''    Bool to modify left (hours)
        CASE z$+"H"                             ''  If is Up Arrow
            x=1                                 ''    Set Hours Shift to 1 
            y=1                                 ''    Set Minutes Shift to 1
        CASE z$+"P"                             ''  If is Down Arrow
            x=23                                ''    Set Hours Shift to 23 
            y=59                                ''    Set Minutes Shift to 23 
    END SELECT                                  ''
    IF r THEN m=(m+y)MOD 60ELSE h=(h+x)MOD 24   ''  Shift Minutes If `r=1` Else Shift Hours
    CLS                                         ''  Clear Screen
    ?RIGHT$("00000"+LTRIM$(STR$(h*1000+m)),5)   ''  Use math to concat Hours and Minutes 
                                                ''  then Convert to String and prepend 0s 
                                                ''  to a length of 5
    LOCATE 1,3                                  ''  Cursor to the the third digit
    ?":"                                        ''  Overwrite that digit with a `:`
LOOP                                            ''  Loop

1
তা কি হওয়া উচিত নয় (m+y)?
নীল

নোটে, করা উচিত নয় কী করা না ?
জোনাথন ফ্রেচ 15

@ জোনাথনফ্রেচ - হ্যাঁ এটি হওয়া উচিত। আমার ব্যাকরণ পরীক্ষা করার জন্য ধন্যবাদ
টেলর স্কট

দুঃখিত, আমি ভেবেছিলাম যে mকোনও কারণে কয়েক মিনিটের জন্য ছিল ... আমি দেখলাম আপনার মন্তব্য করা সংস্করণটি আরও পঠনযোগ্য।
নিল

2

পাওয়ারশেল, 109 103 বাইট

-6 বাইট ধন্যবাদ অ্যাডমবর্কবার্ক

$t=0,0
$args|%{$t[+$i]+=. @{l={$i=0};r={$i=1};u={1};d={119}}.$_}
"{0:00}:{1:00}"-f($t[0]%24),($t[1]%60)

পরীক্ষার স্ক্রিপ্ট:

$f = {

$t=0,0
$args|%{$t[+$i]+=. @{l={$i=0};r={$i=1};u={1};d={119}}.$_}
"{0:00}:{1:00}"-f($t[0]%24),($t[1]%60)

}

@(
    ,('02:57',('u','u','r','d','d','d'))
    ,('00:00',('d','r','u','l','u','r','d'))
    ,('23:59',('d','r','r','d'))
    ,('00:01',('l','l','l','l','r','u'))
    ,('23:59',('d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d','r','d'))
) | % {
    $e, $c = $_
    $r = &$f @c
    "$($r-eq$e): $r"
}

আউটপুট:

True: 02:57
True: 00:00
True: 23:59
True: 00:01
True: 23:59

ব্যাখ্যা

বেসিক ধারণাটি হ'ল একটি [hashtable], যা keysকন্ট্রোল কমান্ড এবং valuesস্ক্রিপ্টব্লকগুলি। কোড আর্গুমেন্ট থেকে প্রতিটি কমান্ডের জন্য স্ক্রিপ্টব্লক কার্যকর করে।


1
আপনি $i=0আপনার অ্যারে $t[+$i]সূচিটি কিছু বাইট সংরক্ষণ করতে চান তা ফেলে মুক্তি থেকে মুক্তি পেতে পারেন । এটি অনলাইন চেষ্টা করুন!
অ্যাডমবর্কবার্ক


1

perl -F // -E, 72 বাইট

$x=H;/u/?$$x++:/d/?$$x--:($x=/l/?H:M)for@F;printf"%02d:%02d",$H%24,$M%60

1

পাইথন, 120 বাইট

o,i=[0,0],0
for s in list(input()):i=(i+(s=='r')-(s=='l')>=1);o[i]+=(s=='u')-(s=='d')
print'%02d:%02d'%(o[0]%24,o[1]%60)

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

1
এছাড়াও,, বলো, এর একটি ইনপুট না একটি প্রাচীর মধ্যে এই রান যখন ldবা rruকারণগুলো iপরিসীমা (0,1) থেকে বেরিয়ে আসার এবং o[i]পরে অ্যাক্সেস করা হয়?
ওবলবেন্স

@ ওউবালেন্স ওহ, আমাকে আপনাকে মনে করিয়ে দেওয়ার জন্য ধন্যবাদ যে আপনার ফাংশন বা প্রয়োজন unput()। প্রয়োজনীয়তা থেকে আমি অনুভব করেছি যে এল এবং আর এর ক্রিয়াগুলি কখনই (কখনই নয় LL) লুপ করবে না
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআझाমা 150 মঞ্চে

@Aaaaaa কোন লুপিং এর অর্থ lllএকই নয় r। বৈধ ইনপুট থাকা llবা rrহ'ল এটি পরীক্ষার ক্ষেত্রেও রয়েছে, উদাহরণস্বরূপ তৃতীয়টি দেখুন।
নিট

এই উত্তরের আউটপুট দেওয়ার পরিবর্তে তৃতীয় পরীক্ষার ক্ষেত্রে একটি সূচিপত্র রয়েছে 23:59এটি অনলাইন চেষ্টা করুন!
0 '


1

আর, 368 355 বাইট

f=function(){C=as.character
i=ifelse
p=paste0
r=1:10
h=C(0:23);m=C(0:59)
h[r]=p(0,h[r])
m[r]=p(0,m[r])
x=y=z=1
while(T){print(p(h[x],":",m[y]))
v=1
n="[UDLRS]"
while(!grepl(n,v))v=toupper(readline(n))
if(v=="L")z=1 else if(v=="R")z=0
if(v=="S")T=F
if(v=="U")if(z)x=i(x==24,1,x+1)else y=i(y==60,1,y+1)
if(v=="D")if(z)x=i(x==1,24,x-1)else y=i(y==1,60,y-1)}}

অবশ্যই সেরা পদ্ধতির নয়, তবে কাজ করে।

কার্যকারিতা: ফাংশন চালান, প্রতিটি অক্ষর (ইন / ডি) ক্রিজে টাইপ করুন বা বাম / ডানে সরান, "s" টাইপ করলে "গেম" শেষ হয়। ক্যাচটি হ'ল এটি একবারে একটি এবং কেবল একটি চিঠি গ্রহণ করবে।

-13 বাইট কিছু মানকে এক সারিতে একীভূত করে, T টি বিরতি ব্যবহারের পরিবর্তে F হিসাবে ওভাররোট করে, নির্মূল করতে বেশ কয়েকটি স্থান খুঁজে পায় এবং পরিবর্তে ভেরিয়েবলে স্ট্রিং সঞ্চারিত হয়

f=function(){C=as.character                             # Abbreviate functions
i=ifelse
p=paste0
r=1:10                                                  # Initialize and format values
h=C(0:23);m=C(0:59)
h[r]=p(0,h[r])
m[r]=p(0,m[r])
x=y=z=1
while(T){print(p(h[x],":",m[y]))                        # Begin while loop and print time
v=1                                                     # Initial value reset each iteration to retrieve a new direction
n="[UDLRS]"                                             # Used for verification and request
while(!grepl(n,v))v=toupper(readline(n))                # Will only accept proper directions or stopping rule
if(v=="L")z=1 else if(v=="R")z=0                        # Evaluate for hour or minute
if(v=="S")T=F                                           # Stopping rule, overwrite True to False
if(v=="U")if(z)x=i(x==24,1,x+1)else y=i(y==60,1,y+1)    # Rules for Up
if(v=="D")if(z)x=i(x==1,24,x-1)else y=i(y==1,60,y-1)}}  # Rules for Down

আমি আর স্ট্রিং এবং / বা ভেক্টর গ্রহণ করতে একটি বিকল্প বিন্যাস সম্পাদনা করছি, পরের সপ্তাহে পোস্ট করব post


1

স্মাইলব্যাসিক, 123 বাইট

@L
B=BUTTON(2)D=(B==1)-(B==2)S=S+!S*(B>7)-S*(B==4)H=(H+D*!S+24)MOD 24WAIT
M=(M+D*S+60)MOD 60?FORMAT$("%02D:%02D",H,M)GOTO@L

BUTTON() একটি পূর্ণসংখ্যা ফেরত দেয় যেখানে প্রতিটি বিট একটি বোতাম উপস্থাপন করে

1 = up
2 = down
4 = left
8 = right
...

BUTTON(2) সবেমাত্র চাপ দেওয়া বোতামগুলি (ধারণ করা হচ্ছে না) কেবল ফেরত দেয়

WAITপ্রয়োজনীয় কারণ কারণ BUTTONপ্রতি ফ্রেমে একবার আপডেট হয় (এক সেকেন্ডের 1/60)। অন্যথায় একই বোতাম টিপতে একাধিকবার সনাক্ত করা হত।

এটি অবশ্যই খাটো হতে পারে


0

05AB1E , 38 37 বাইট

'l¡ε'r¡}0ζćs˜‚€S„udS1®‚:OŽ9¦2ä%T‰J':ý

ব্যবহার udlrদিকনির্দেশের জন্য, কিন্তু ব্যবহার করতে পারে ^v<>একই বাইট গোনা জন্য (অক্ষর ↑↓←→, 05AB1E এর codepage অংশ নয় তাই যারা ব্যবহার যেহেতু এনকোডিং হওয়া ASCII পরিবর্তন করা উচিত নয়, অনেক দ্বারা বাইট গোনা বাড়িয়ে দেবে)।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

'l¡            '# Split the (implicit) input on "l"
                #  i.e. "lllrurulddd" → ["","","","ruru","ddd"]
   ε   }        # Map each item to:
    'r¡        '#  Split the item on "r"
                #   i.e. ["","","","ruru","ddd"] → [[""],[""],[""],["","u","u"],["ddd"]]
        0ζ      # Zip/transpose; swapping rows/columns, with "0" as filler
                #  i.e. [[""],[""],[""],["","u","u"],["ddd"]]
                #   → [["","","","","ddd"],["0","0","0","u","0"],["0","0","0","u","0"]]
ć               # Head extracted: pop and push the remainder and head-item to the stack
                #  i.e. [["","","","","ddd"],["0","0","0","u","0"],["0","0","0","u","0"]]
                #   → [["0","0","0","u","0"],["0","0","0","u","0"]] and ["","","","","ddd"]
 s              # Swap to get the remainder
  ˜             # Flatten it
                #  i.e. [["0","0","0","u","0"],["0","0","0","u","0"]]
                #   → ["0","0","0","u","0","0","0","0","u","0"]
               # Pair the head and remainder back together
                #  i.e. ["","","","","ddd"] and ["0","0","0","u","0","0","0","0","u","0"]
                #   → [["","","","","ddd"],["0","0","0","u","0","0","0","0","u","0"]]
    S          # Convert each item to a list of characters
                # (implicitly flattens and removes empty strings)
                #  i.e. [["","","","","ddd"],["0","0","0","u","0","0","0","0","u","0"]]
                #   → [["d","d","d"],["0","0","0","u","0","0","0","0","u","0"]]
      udS1®‚:  # Replace all "u" with "1" and all "d" with "-1"
                #  i.e. [["d","d","d"],["0","0","0","u","0","0","0","0","u","0"]]
                #   → [["-1","-1","-1"],["0","0","0","1","0","0","0","0","1","0"]]
              O # Then take the sum of each inner list
                #  i.e. [["-1","-1","-1"],["0","0","0","1","0","0","0","0","1","0"]]
                #   → [-3,2]
Ž9¦             # Push compressed integer 2460
   2ä           # Split into two parts: [24,60]
     %          # Modulo the two lists
                #  i.e. [-3,2] and [24,60] → [21,2]
      T        # Divmod each with 10
                #  i.e. [21,2] → [[2,1],[0,2]]
        J       # Join each inner list together
                #  i.e. [[2,1],[0,2]] → ["21","02"]
         ':ý   '# Join the list with ":" delimiter
                #  i.e. ["21","02"] → "21:02"
                # (and output the result implicitly)

আমার এই 05AB1E ডগা দেখুন (অধ্যায় ইপিএসে দক্ষিন কোরিয়ায় কিভাবে পূর্ণসংখ্যার কম্প্রেস কিভাবে? ) কেন বুঝতে Ž9¦হয় 2460

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