ডট ও কমা টাইম মার্কার সহ এএসসিআইআই ঘড়ি


39

ভূমিকা

কোড গল্ফ ব্যাখ্যা

ভাবুন যে অক্ষরের রেখাটি আসলে দুটি সারি। উপরের সারি - বিন্দু - ঘন্টা (24 ঘন্টা সিস্টেম) উপস্থাপন করে, যখন কম - কমা - মিনিট উপস্থাপন করে । একটি চরিত্র ঘন্টা, মিনিট বা উভয়ই উপস্থাপন করতে পারে - যখনই এটি সম্ভব।

প্রথমে সম্ভবত আপনাকে মধ্যরাত থেকে কয়েক ঘন্টা এবং মিনিটে রূপান্তর করতে হবে ।

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

  • (মন্তব্য) এইচ: মিমি - result
  • (কেবলমাত্র ঘন্টা) 05:00 - '''''
  • (মাত্র মিনিট) 00:08 - ,,,,,,,,
  • (ঘন্টা <মিনিট) 03:07 - ;;;,,,,
  • (ঘন্টা> মিনিট) 08:02 - ;;''''''
  • (ঘন্টা = মিনিট) 07:07 - ;;;;;;;
  • (দিনের শুরু) 00:00 - ( খালি ফলাফল )

লক্ষ্য করুন যে "উভয়" অক্ষর সর্বোচ্চ 23 বার ব্যবহার করা যেতে পারে - 23: xx এর জন্য, যেখানে xx 23 বা তার বেশি হয়।

প্রতীক

চরিত্রটি যদি (বিধি 5 দেখুন) আপনার ভাষায় পালাতে হয় তবে আপনি এটিকে বিকল্পের একটিতে পরিবর্তন করতে পারেন। যদি বিকল্পগুলি পর্যাপ্ত না হয় তবে আপনি অন্যান্য চিহ্ন ব্যবহার করতে পারেন - তবে এটি যুক্তিসঙ্গত রাখুন। আমি কেবল বাধা হয়ে উঠতে চাই না।

  • ;(সেমিকোলন) - ঘন্টা এবং মিনিট উভয়ের জন্য চিহ্নিতকরণ (Alt ::)
  • '(অ্যাস্টোস্ট্রোফ) - কয়েক ঘন্টা ধরে চিহ্নিত (Alt '``°:)
  • ,(কমা) - কয়েক মিনিটের জন্য চিহ্নিত (Alt .:)

অতিরিক্ত বিধি

  1. সর্বনিম্ন পরিমাণে বাইট জিততে কোডটি!
  2. যখনই এটি সম্ভব তখন আপনার উভয় প্রতীক ব্যবহার করতে হবে। 02:04 এর জন্য ফলাফল হতে পারে না, হতে পারে '',,,,না ;',,,। এটা হতে হবে;;,,
  3. ইনপুট - স্ক্রিপ্ট / অ্যাপের প্যারামিটার, ব্যবহারকারীর ইনপুট (পঠনের মতো) বা কোডের ভিতরে ভেরিয়েবল
    3.1 হতে পারে। যদি ভেরিয়েবলের অভ্যন্তরীণ কোডটি ব্যবহার করা হয়, তবে এর দৈর্ঘ্যটি দীর্ঘতম সম্ভব হতে হবে। এটি 1439(23:59), সুতরাং এটি দেখতে দেখতে ভাল লাগবেt=1439
  4. "উভয়" অক্ষর দ্বারা প্রতীকী হওয়া সাধারণ অংশটি (12:05 তে, 03:10 তে 3) অবশ্যই স্ট্রিংয়ের শুরুতে রাখা উচিত
  5. প্রতীকগুলি কেবলমাত্র যদি আপনার কোডটিতে পালাতে হয় তবে বিকল্পগুলিতে প্রতিস্থাপন করা যেতে পারে।
  6. 00:00 মিনিটের পরে ইনপুট দেওয়া হয় । আপনি ধরে নিতে পারেন যে এটি একটি অ-নেতিবাচক পূর্ণসংখ্যা।

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

Input: 300
Output: '''''

Input: 8
Output: ,,,,,,,,

Input: 187
Output: ;;;,,,,

Input: 482
Output: ;;''''''

Input: 427
Output: ;;;;;;;

Input: 0
Output:  (empty)

ধন্যবাদ, আদনান আমার পোস্ট সম্পাদনার জন্য! এইভাবে আমি আমার সাথে আমার, নবাগত
গল্ফকে

3
সমস্যা নেই! এটি একটি খুব ভাল প্রথম পোস্ট এবং একটি চমৎকার চ্যালেঞ্জ :)
আদনান

1
এটি কেবলমাত্র সেমিকোলন এবং কমা দিয়ে খুব ভাল দেখায়, তবে অ্যাডোস্ট্রোফসগুলি এটিকে সমস্ত
উপহাস

আসলে 1439হয় 23:59এবং 1339। (23 x 60 + 59)।
insertusernamehere

ভাল কথার জন্য আপনারা সবাইকে ধন্যবাদ! :) @ স্পার, হ্যাঁ, এটি একটি খারাপ বিষয় :( আপনি কীভাবে এটি প্রতিস্থাপন করতে পারবেন তা কি ধারণা করেছেন?
প্রবেশের নামটি এখানে

উত্তর:


10

পাইথ, 19 বাইট

:.iF*V.DQ60J"',"J\;

পরীক্ষা স্যুট

:.iF*V.DQ60J"',"J\;
      .DQ60            Divmod the input by 60, giving [hours, minutes].
           J"',"       Set J equal to the string "',".
    *V                 Perform vectorized multiplication, giving H "'" and M ','.
 .iF                   Interleave the two lists into a single string.
:               J\;    Perform a substitution, replacing J with ';'.

8

সিজেম, 22 20 19 বাইট

এসটিডিএন থেকে ইনপুট নেয়:

ri60md]',`.*:.{;K+}

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

ri     e# Read input and convert to integer.
60md   e# Divmod 60, pushes hours H and minutes M on the stack.
]      e# Wrap in an array.
',`    e# Push the string representation of the comma character which is "',".
.*     e# Repeat apostrophe H times and comma M times.
:.{    e# Apply this block between every pair of characters. This will only applied to
       e# first N characters where N = min(hours,minutes). The others will remain
       e# untouched. So we want the block to turn that pair into a semicolon...
  ;    e#   Discard the comma.
  K+   e#   Add 20 to the apostrophe to turn it into a semicolon.
}

এখানে সত্যিই ভাগ্যবান হয়েছিল যে জিনিসগুলি এখানে কীভাবে একসাথে কাজ করেছে, বিশেষত কয়েক ঘন্টা সময় 'এবং কয়েক মিনিটের কার্যনির্বাহীকরণ ,যাতে স্ট্যাকের উপর কয়েক ঘন্টা এবং মিনিটের ক্রমটি চরিত্রটির স্ট্রিং প্রতিনিধিত্বের সাথে মেলে।

আমি এখনও অবধি খুঁজে পাওয়া এটিই একমাত্র 3-বাইট ব্লক। এখানে 4 টি-চরিত্রের সমাধানের পরিমাণ ছিল যদিও:

{;;';}
{';\?}
{^'0+}
{^'F-}
{-'@+}
{-'6-}
...

6

জিএনইউ শেড, 37

স্কোরের জন্য -Eবিকল্পগুলির জন্য +1 অন্তর্ভুক্ত ।

আমি আমার বাশ উত্তরের গল্ফতায় বিশেষভাবে মুগ্ধ হইনি , তাই আমি ভেবেছিলাম মজা করার জন্য সেড দিয়ে চেষ্টা করব।

এই মেটা-উত্তর অনুসারে ইনপুট অচল অবস্থায় রয়েছে ।

y/1/,/          # Convert unary 1's to commas (minutes)
s/,{60}/'/g     # divmod by 60.  "'" are hours
:               # unnamed label
s/(.*)',/;\1/   # replace an apostrophe and comma with a semicolon
t               # jump back to unnamed label until no more replacements

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


নামবিহীন লেবেল ??
মাইকজার্ভ


@ মান্যাটওয়ার্ক - আমি মনে করি এটি অবশ্যই একটি জিএনইউ বাগ হওয়া উচিত।
মাইকজার্ভ

@ মিমকিজার - তবে বাগ ব্যবহার করা ঠিক আছে, তাই না? আমি আপনাকে বিদ্রূপ করতে বলছি না, আমি ঠিক জানি না :)
ক্রিজিসিউ

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

6

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

def g(t):d=t%60-t/60;print(t/60*";")[:t%60]+","*d+"'"*-d

এমন একটি ফাংশন যা মুদ্রণ করে (এর চেয়ে কম এক চর t=input();)

পদ্ধতিটি লভজোর মতো । সংখ্যাটি ,মিনিট এবং ঘন্টার মধ্যে 0 টির অন্তর্নিহিত নূন্যতম সহ আলাদা হয় For কারণ 'এটি অবহেলা । কারণ ;, কয়েক ঘন্টা সময় minনিয়ে স্পষ্টভাবে গণনা করুন ;, তারপরে কয়েক মিনিটের সংখ্যায় ছাঁটাই করুন।

এটি অক্ষর সংরক্ষণের জন্য সংরক্ষণ করে d, তবে এখানে ঘন্টা এবং মিনিটের সংখ্যা নয়। ল্যাম্বদা সহ অ্যানালগ দুটি অক্ষর দীর্ঘ ছিল (58), সুতরাং পরিবর্তনশীল অ্যাসাইনমেন্টগুলি এটি মূল্যবান।

lambda t:(t%60*";")[:t/60]+","*(t%60-t/60)+"'"*(t/60-t%60)

ইনপুটটি সরাসরি প্রক্রিয়াকরণ করলে অক্ষর বাঁচেনি (58):

h,m=divmod(input(),60);d=m-h;print(";"*m)[:h]+","*d+"'"*-d

স্লাইসিং সহ আরও কৌশল, দীর্ঘতর ()৪):

def g(t):m=t%60;h=t/60;return(";"*m)[:h]+(","*m)[h:]+("'"*h)[m:]


3

খাঁটি বাশ (কোনও বাহ্যিক উপযোগ নেই), 103

p()(printf -vt %$2s;printf "${t// /$1}")
p \; $[h=$1/60,m=$1%60,m>h?c=m-h,h:m]
p , $c
p \' $[m<h?h-m:0]

2 বাইট সংরক্ষণের জন্য @ এফ.হৌরিকে ধন্যবাদ


নিস! কিন্তু আপনি সোয়াপিং 2 অক্ষর বাঁচাতে পারে $1এবং $2p()ও লিখতে p , $cলাইন 3. এ
এফ Hauri

হ্যাঁ, তবে এটি কেবলমাত্র একটি হিসাবে ব্যবহৃত হয়েছে printf "%s", cখালি রাখা ভাল কাজ করবে (যখন পুনরায় ব্যবহৃত হবে না)
এফ হৌরি

@ এফ.হৌরি এখন আমি পেয়েছি - ধন্যবাদ!
ডিজিটাল ট্রমা

3

সি, 119 বাইট

#define p(a,b) while(a--)putchar(b);
main(h,m,n){scanf("%d",&m);h=m/60;m%=60;n=h<m?h:m;h-=n;m-=n;p(n,59)p(h,39)p(m,44)}

বিশদ

// macro: print b, a times
#define p(a,b) while(a--)putchar(b)

int main(void)
{
    int h,m,n;
    scanf("%d",&m);  // read input

    h=m/60;m%=60;    // get hours:minutes
    n=h<m?h:m;       // get common count
    h-=n;m-=n;       // get remaining hours:minutes

    p(n,59);        // print common
    p(h,39);        // print remaining hours
    p(m,44);        // print remaining minutes

    return 0;
}

1
putcharঅক্ষর হিসাবে অক্ষর হিসাবে & পূর্ণসংখ্যার ব্যবহার একটি বাইট সংরক্ষণ করে, ম্যাক্রোর ভিতরে সেমিকোলনগুলি
কোয়ান্টিন

@ কুইন্টিন নোটটি নেওয়া হয়েছে, 5 বাইট সংরক্ষণ করা হয়েছে
খালেদ.কে

whileআপনার # ডেফাইন ম্যাক্রোতে থাকার আগে আপনি স্থানটি হারাতে পারেন । -1 বাইট
অ্যালবার্ট রেনশো

1
আপনি কেবল ম্যাক্রোর পরিবর্তে পি (ক, খ) কে একটি ফাংশন তৈরি করে আরও কিছু বাইট সংরক্ষণ করতে পারেন। (এবং আপনার মূল ফাংশনে আরও কয়েকটি আধা-
অ্যালবার্ট রেনশো

3

হাস্কেল, 68 66 বাইট

g(h,m)=id=<<zipWith replicate[min h m,h-m,m-h]";',"
g.(`divMod`60)

ব্যবহারের উদাহরণ:

(g.(`divMod`60)) 482

এখানে চতুর বিটটি হল যে replicateপ্রদত্ত দৈর্ঘ্য নেতিবাচক বা শূন্য হলে খালি স্ট্রিংটি ফিরিয়ে আনবে তাই আমি এটি উভয় পার্থক্যে প্রয়োগ করতে পারি এবং কেবল ইতিবাচকটি প্রদর্শিত হবে। প্রথম অংশটি সহজ, যেহেতু সেমিকোলনের সংখ্যা দুটিয়ের মধ্যে সর্বনিম্ন। তারপরে zipWithসংশ্লিষ্ট আইটেমগুলিতে ফাংশনটি প্রয়োগ করে।

সম্পাদনা: বুঝতে পেরেছি আমি কয়েক মিনিটের জন্য ভুল চরটি ব্যবহার করছিলাম

সম্পাদনা 2: সংরক্ষিত 2 বাইট @ লাইকোনি ধন্যবাদ


আপনি প্রতিস্থাপন দুটি বাইট সংরক্ষণ করতে পারবেন concat$সঙ্গে id=<<
লাইকনি

2

জাভাস্ক্রিপ্ট (ES6) 69

m=>";".repeat((h=m/60|0)>(m%=60)?m:h)+",'"[h>m|0].repeat(h>m?h-m:m-h)

2

পাওয়ারশেল, 99 85 বাইট

param($n)";"*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+"'"*(($h-$m)*!$b)+","*(($m-$h)*$b)

লুভজোর পদ্ধতিটি ব্যবহার করে , এটি আমার পাওয়ারশেল বাস্তবায়ন।

ungolfed

param($n) 
# set the number of minutes and hours, and a boolean which one is bigger
# and also output the correct number of ;s
";"*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+ 
# add the difference between h and m as 's but only if h > m
"'"*(($h-$m)*!$b)+
# add the difference between m and h as ,s but only if m > h
","*(($m-$h)*$b)

অ্যাডমবর্কবর্ককে 14 বাইট সংরক্ষণ করা হয়েছে


আপনি প্রথমটির জন্য সিউডো-টের্নারি ব্যবহার করে সংরক্ষণ করতে পারেন $mএবং এতে $hঘোষণাগুলি সরিয়ে নিয়ে যান এবং তারপরে বুলিয়ান গুণন ব্যবহার করে। ভালো লেগেছে -param($n)';'*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+'°'*(($h-$m)*!$b)+','*(($m-$h)*$b)
অ্যাডমবর্কবর্ক

1

পাইথন 3, 98 বাইট

d=int(input());m=d%60;h=int((d-m)/60)
if m>=h:print(";"*h+","*(m-h))
else:print(";"*(m)+"'"*(h-m))

সম্ভবত সেরা উত্তর না, তবে এটি অনেক মজা ছিল!


1

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

t=input();m,h=t%60,t/60
print";"*min(h,m)+","*(m-h)+"'"*(h-m)

Explaination:

t=input();              # Read input
          m,  t%60,     # Do a divmod, h = div, m = mod
            h=     t/60

print";"*min(h,m)+                    # Print the minimum of the h and m, but in ";"s
                  ","*(m-h)+          # Print (m-h) ","s (if m-h is negative, print nothing)
                            "'"*(h-m) # Print (h-m) "'"s (if h-m is negative, print nothing)

1

পিএইচপি, 81 বাইট

STDINকমান্ড লাইন আর্গুমেন্টগুলি পড়ার চেয়ে নেওয়া বা গ্রহণের চেয়ে ছোট হওয়ায় আমি পরিবর্তনশীল ইনপুটটির জন্য গিয়েছিলাম ।

for($_=1439;$i<max($h=0|$_/60,$m=$_%60);++$i)echo$i<$h?$i<min($h,$m)?';':"'":",";

আমি ভেবেছিলাম যে আমি পিএইচপি বরং ভাল জানি, কিন্তু আমি দেখতে প্রথমবারের মত. আমি মনে করি আমি এটি কিছুটা অনুশীলনের জন্য ব্যবহার করব - আমি এটি বিশ্লেষণ করব :)
ক্রিজিসিউ

ব্যর্থ 240$i>=min($h,$m)?$h<$m?",":"'":";"(+1 বাইট) চেষ্টা করুন । অথবা ব্যবহার করুন for($_=1439;$i<max($h=0|$_/60,$m=$_%60);)echo"',;"[$i++<min($h,$m)?2:$h<$m];(76 বাইট)। বিটিডব্লিউ: একক উদ্ধৃতি -rঅসম্ভবকে রেন্ডার করে ; সুতরাং আপনার যদি স্ট্রিং বা °স্বতন্ত্র অবস্থায় থাকে তবে কয়েক ঘন্টার জন্য ব্যাকটিক ব্যবহার করা উচিত (কোনও উদ্ধৃতি -> -1 বাইটের প্রয়োজন নেই)।
তিতাস

1

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

x=>';'[r='repeat'](y=Math.min(h=x/60|0,m=x%60))+"'"[r](h-y)+','[r](m-y)

বৈশিষ্ট্য অ্যাক্সেস / ফাংশন আর্গুমেন্টে অ্যাসাইনমেন্টের দুর্দান্ত ব্যবহার। +1
সাইয়েস

1

পার্ল 6, 103 101 98 97 69 বাইট

$_=get;say ";"x min($!=($_-$_%60)/60,$_=$_%60)~"'"x $!-$_~","x $_-$!;

বেশ কয়েকটি অ্যারে আউটপুট দেয় তবে এটিকে ফাক করুন, উপভোগ করুন। যথারীতি, কোনও গল্ফিং পারফরম্যান্টগুলি প্রশংসিত হয়।

সম্পাদনা: -২ বাইট: সাহসী হয়ে কিছু কাস্ট সরিয়ে ফেলেছে।

অ্যারেগুলি সরিয়ে সম্পাদনা 2: -3 বাইট by

সম্পাদনা 3: -1 বামটি সঠিক ফর্ম্যাটে মুদ্রণের জন্য, "ল্যাম্বডাস" ব্যবহার করে এবং প্যারান্থেসিগুলি সরিয়ে ফেলুন।

সম্পাদনা 4: (দুঃখিত ছেলেরা) সেই ঘন্টাগুলি আপত্তিজনকভাবে - মিনিটগুলি 0 এবং এর বিপরীতে ফিরে আসে। বিবৃতি যদি অপসারণ করা হয়। তারপরে বন্ধনীগুলি সরানো, তারপরে বুঝতে পেরে আমার ল্যাম্বডা লাগবে না। -২৮ বাইট :)

ওহ এই আমি ভাল হচ্ছে।


0

সি, 141 বাইট

main(h,m){scanf("%d",&m);h=(m/60)%24;m%=60;while(h||m){if(h&&m){printf(";");h--;m--;}else if(h&&!m){printf("'");h--;}else{printf(",");m--;}}}

আমি মনে করি আপনি কিছু বাইট ব্যবহার করে সঞ্চয় করতে পারেন h>0||m>0। তারপর আপনি প্রয়োজন h--;m--;শুধুমাত্র প্রত্যেক পুনরাবৃত্তির এবং একবার {}জন্য if/elseঅপ্রচলিত পেতে হবে।
insertusernamehere

আপনি নিজের দ্বিতীয় শর্তসাপেক্ষে কয়েকটি বাইট সংরক্ষণ করতে পারেন: পরিবর্তে else if(h&&!m)আপনার কেবলমাত্র থাকতে পারেelse if(h)
Hellion

এবং অবশেষে টের্নারি অপারেটরটি ব্যবহার করার চেষ্টা করুন, এটি আপনাকে "দীর্ঘ" শব্দ ifএবং এর মতো ব্যবহার থেকে বাঁচায় else
সন্নিবেশকারী নাম 21

কোনও ফাংশন হিসাবে রিপ্যাক্টরিংয়ের বিষয়টি বিবেচনা করুন যা ইনপুটটিকে ইনট প্যারামিটার হিসাবে নেয় - যা আপনাকে কমপক্ষে সংরক্ষণ করতে পারে scanf()
ডিজিটাল ট্রমা

আমি %24এটি প্রয়োজনীয় বলে মনে করি না - সর্বাধিক ইনপুট 23:59।
ডিজিটাল ট্রমা

0

গেমার, ১১৯ টি অক্ষর

<D>=@set{h;@div{$0;60}}@set{m;@mod{$0;60}}@repeat{@cmpn{$h;$m;$h;$h;$m};\;}@repeat{@sub{$h;$m};'}@repeat{@sub{$m;$h};,}

নমুনা রান:

bash-4.3$ gema '<D>=@set{h;@div{$0;60}}@set{m;@mod{$0;60}}@repeat{@cmpn{$h;$m;$h;$h;$m};\;}@repeat{@sub{$h;$m};`}@repeat{@sub{$m;$h};,}' <<< '252'
;;;;,,,,,,,,

0

মতলব: 89 বাইট

i=input('');m=mod(i,60);h=(i-m)/60;[repmat(';',1,min(h,m)),repmat(39+5*(m>h),1,abs(h-m))]

টেস্ট:

310
ans =
;;;;;,,,,,

0

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

INPUT M
H%=M/60M=M-H%*60?";"*MIN(H%,M);",'"[M<H%]*ABS(H%-M)

ব্যাখ্যা:

INPUT MINUTES 'input
HOURS=MINUTES DIV 60 'separate the hours and minutes
MINUTES=MINUTES MOD 60
PRINT ";"*MIN(HOURS,MINUTES); 'print ;s for all positions with both
PRINT ",'"[MINUTES<HOURS]*ABS(HOURS-MINUTES) 'print extra ' or ,

এটি বেশ ভয়ানক দেখায়, যেহেতু নীচে অংশ ;এমনকি হিসাবে একই নয় ,মধ্যে SmileBASIC এর ফন্ট


0

পিএইচপি, 81 বাইট

আরও কিছু সমাধান:

echo($r=str_repeat)(";",min($h=$argn/60,$m=$argn%60)),$r(",`"[$h>$m],abs($h-$m));
// or
echo($p=str_pad)($p("",min($h=$argn/60,$m=$argn%60),";"),max($h,$m),",`"[$h>$m]);

সাথে চালাও echo <time> | php -R '<code>'

<?=($r=str_repeat)(";",min($h=($_=1439)/60,$m=$_%60)),$r(",`"[$h>$m],abs($h-$m));
// or
<?=($r=str_repeat)(";",min($h=.1/6*$_=1439,$m=$_%60)),$r(",`"[$h>$m],abs($h-$m));
// or
<?=str_pad(str_pad("",min($h=($_=1439)/60,$m=$_%60),";"),max($h,$m),",`"[$h>$m]);

1439ইনপুট দিয়ে প্রতিস্থাপন করুন, ফাইল এ সংরক্ষণ করুন, চালান।


0

রুবি, 50 টি অক্ষর

->t{(?;*h=t/60)[0,m=t%60]+",',"[0<=>m-=h]*m.abs}

ধন্যবাদ:

  • জিবি জন্য
    • আমাকে মনে করিয়ে দিচ্ছি যে আমি স্ট্রিংয়ের চেয়ে বেশি অক্ষর নিতে পারি না (-1 অক্ষর)
    • আমার গণনা পুনর্গঠন (-1 অক্ষর)

ব্যবহারের জন্য এতক্ষণ অপেক্ষা করেছিলেন Numeric.divmod, এটি বুঝতে পেরেছিলাম যে এটির ভয়াবহ দীর্ঘ।

নমুনা রান:

2.1.5 :001 > puts ->t{(?;*h=t/60)[0,m=t%60]+",',"[0<=>m-=h]*m.abs}[252]
;;;;,,,,,,,,

1
মিনি ব্যবহার করার পরিবর্তে স্ট্রিংটি কেটে 1 অক্ষর সংরক্ষণ করুন:(?;*h=t/60)[0,m=t%60]
জিবি

1
এবং এম থেকে এইচ বিয়োগ করে আরেকটি বাইট:",',"[0<=>m-=h]*m.abs
জিবি

0

05 এ বি 1 ই , 25 বাইট

60‰vy„'.Nè×}‚.BøJ„'.';:ðK

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

60‰vy„'.Nè×}সংক্ষিপ্তভাবে সংক্ষিপ্ত করা যেতে পারে, আমি কেবল এটি বের করতে পারিনি, এবং সন্দেহ আছে যে এর কোনও ভেক্টর সংস্করণ না থাকলে আমি এই পদ্ধতির সাথে জিততে 7 বাইটগুলি শেভ করতে সক্ষম হব ×


উদাহরণ (63 এর সমান ইনপুট সহ):

60‰                       # Divmod by 60.
                          # STACK: [[1,3]]
   vy      }              # For each element (probably don't need the loop)...
                          # STACK: []
     „'.Nè×               # Push n apostrophe's for hours, periods for minutes.
                          # STACK: ["'","..."]
            ‚             # Group a and b.
                          # STACK: [["'","..."]]
             .B           # Boxify.
                          # STACK: [["'  ","..."]]
               ø          # Zip it (Transpose).
                          # STACK: [["'."," ."," ."]
                J         # Join stack.
                          # STACK: ["'. . ."]
                 „'.';:   # Replace runs of "'." with ";".
                          # STACK: ["; . ."]
                       ðK # Remove all spaces.
                          # OUTPUT: ;..

D60÷''×s60%'.ׂ.BøJ„'.';:ðK আমার আসল সংস্করণ ছিল, তবে এটি ডিভোডের চেয়েও বেশি ব্যয়বহুল।

60‰WDµ';ˆ¼}-¬0Qi'.ë''}ZׯìJ আমি অন্য একটি পদ্ধতি চেষ্টা করেছিলাম ...



0

জাভা 8, 101 99 86 বাইট

n->{String r="";for(int m=n%60,h=n/60;h>0|m>0;r+=h--*m-->0?";":h<0?",":"'");return r;}

ব্যাখ্যা:

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

n->{                      // Method with integer parameter and String return-type
  String r="";            //  Result-String (starting empty)
  for(int m=n%60,h=n/60;  //   Get the minutes and hours from the input integer
      h>0|m>0;            //   Loop as long as either the hours or minutes is above 0
    r+=                   //   Append the result-String with:
       h--*m-->0?         //    If both hours and minutes are above 0
                          //    (and decrease both after this check):
        ";"               //     Use ";"
       :h<0?              //    Else-if only minutes is above 0 (hours is below 0)
        ","               //     Use ","
       :                  //    Else:
        "'"               //     Use "'"
  );                      //  End loop
  return r;               //  Return the result
}                         // End of method
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.