কোডগলফ.কম: সময় সাশ্রয় করা


11

কোডগলফ.কম থেকে (সেপ্টেম্বর 15, 2011-তে লোড হচ্ছে না) এমন ছিল যা আমাকে পাগল করছে। একটি বহনকারী ফর্মের একটি ঘড়ি STDOUT এ মুদ্রণ করুন, STDIN থেকে সময় পড়ুন এবং hঘন্টা এবং mমিনিটে একটি চিহ্ন চিহ্নিত করুন (5 টির একাধিককে গোল করা হবে) এবং xযদি তারা ওভারল্যাপ করে, অব্যবহৃত টিকগুলি একটি দিয়ে চিহ্নিত করা হয় o, যাতে

echo "23:13" | perl script.pl

উৎপাদনের

        o
    h       o

 o             m

o               o

 o             o

    o       o
        o

খনিটি হ'ল:

$/=':';($h,$m)=<>;printf'%9s
%5s%8s

%2s%14s

%s%16s

%2s%14s

%5s%8s
%9s',map{qw'o h m x'[2*($_==int$m/5)^$_==$h%12]}map{$_,11-$_}0..5

পার্ল ব্যবহার করে ১৩6 টি অক্ষরের জন্য। আমি আশা করি আমি সাইটে যেতে পারতাম, তবে আমার মনে হয় যে নেতারা 100 বছরের কম বয়সী ছিলেন, তারা পার্লও ব্যবহার করেছিলেন। অন্য কেউ এটি মারতে পারেন?



একটি আকর্ষণীয় পাঠ্য :)
জেবি

@ পিটার, এটি সোনার খনি! এটি সন্ধানের জন্য ধন্যবাদ, আমি আশ্চর্য হই যে আমার কি তাদের কৌশলগুলি মানিয়ে নিতে পারে?
জোয়েল বার্গার

1
বৃত্তের পরিবর্তে এই জাতীয় লেবু আকারে কিছু ব্যবহার করার গুরুতর কারণ আছে কি?
ব্যবহারকারীর অজানা

1
@ ব্যবহারকারী-অজানা: মূল টাস্কটি সম্ভবত একটি বিস্তৃত ফন্ট ব্যবহার করে ডিজাইন করা হয়েছিল।
হামার

উত্তর:


3

গল্ফস্ক্রিপ্ট, 75 বাইট

মন্তব্যে লিঙ্কিত নিবন্ধ দ্বারা অনুপ্রাণিত ।

':'/{~}/5/:m;12%:h;"XXXXXXXXXXXX"{..318\%9/' '*@12%.h=2*\m=+'omhx'=@85/n*}%

XXXXXXXXXXXXঅংশ, ডাটা 12 বাইট প্রতিনিধিত্ব করে তাদের কিছু অমুদ্রণীয়, এবং বাইট ক্রম উল্লেখ করা আবশ্যক 120 47 253 22 194 9 183 44 196 55 125 246

সুবিধার জন্য, এখানে একটি বেস 64 এনকোডড সংস্করণ রয়েছে:

JzonL3t+fS81LzptOzEyJTpoOyJ4L/0Wwgm3LMQ3ffYiey4uMzE4XCU5LycgJypAMTIlLmg9Mipc
bT0rJ29taHgnPUA4NS9uKn0l

উদাহরণ রান:

$ echo -n "JzonL3t+fS81LzptOzEyJTpoOyJ4L/0Wwgm3LMQ3ffYiey4uMzE4XCU5LycgJypAMTIlLmg9MipcbT0rJ29taHgnPUA4NS9uKn0l" | base64 -d > saving-time.gs
$ ls -l saving-time.gs 
-rw-r--r-- 1 ahammar ahammar 75 2012-01-29 17:31 saving-time.gs
$ ruby golfscript.rb saving-time.gs <<< "15:37"
        o
    o       o

 o             o

o               h

 o             o

    m       o
        o

2

সি, 259 244 163 অক্ষর

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

main(i,h,m,x){
    scanf("%d:%d",&h,&m);
    for(i=0;i<12;
        printf("%*c","IEHBNAPBNEHI"[i++]-64,"ohmx"[(x==h%12)+2*(x==m/5)]))
        x=i%2?puts("\n"+(i%10==1)),11-i/2:i/2;
    puts("");
}

পুরানো প্রয়াস (এএনএসআই অবকাশ কোডগুলি ব্যবহার করে), 244 টি অক্ষর:

f(x,y)char*y;{printf("\033[%d%c",x>0?x:-x,y[x<0]);}
main(i,h,m,x){
    char*v="HIJJJJIGFFFFPKJHFDCCDFHJ";
    f(i=f(scanf("%d:%d",&h,&m),"J")*0,v);
    for(;i<12;i++)
        (x=v[i+12]-72)&&f(x,"CD"),
        f(v[i]-72,"BA"),
        putchar("omhx"[2*(i==h%12)+(i==m%60/5)]);
    f(i,"B");
}

1

পাইথন, 175 অক্ষর

h,m=map(int,raw_input().split(':'))
S=([' ']*17+['\n'])*11
for i in range(12):p=1j**(i/3.);S[98+int(8.5*p.imag)-18*int(5*p.real)]='ohmx'[2*(i==m/5)+(i==h%12)]
print''.join(S),

আপনার পার্ল কোডটি পরাজিত করে না, তবে জটিল সংখ্যায় অন্তর্নিহিত আরও সংক্ষিপ্ত ভাষা (বা ট্রিগ ফাংশন) আরও ভাল করতে এই ধারণাটি ব্যবহার করতে পারে।


1

পাইথন, 226 টি অক্ষর

h,p,s=raw_input().split(':'),['o']*12,[0,11,1,10,2,9,3,8,4,7,5,6]
a,b=int(h[0])%12,int(h[1])/5
p[a],p[b]='h','m' if a!=b else 'x'
print '%9s\n%5s%8s\n\n %s%14s\n\n%s%16s\n\n %s%14s\n\n%5s%8s\n%9s'%tuple([p[i] for i in s])

ব্যবহার: 'পাইথন স্ক্রিপ্ট.পি' চালান তারপর প্রয়োজনীয় সময় টাইপ করুন। (প্রাক্তন: 09:45)

আউটপুট:

        o
    o       o

 o             o

x               o

 o             o

    o       o
        o

0

আমার পার্ল সমাধান:

use POSIX;$/=':';@ss=(8,4,1,0,1,4,8);@sn=(0,7,13,15,13,7,0);$h=<stdin>;
$m=<stdin>;if($h>12){$h=$h-12;}$m=floor($m/5);
for($c=0;$c<7;$c++){for($s=0;$s<$ss[$c];$s++){printf(" ");}
$ac='o';if($h>5&&$h-6==6-$c){$ac='h';}if((($m>5)&&$m-6==6-$c)||($m==$c)&&($c==0)){
if($h>5&&$h-6==6-$c){$ac='x';}else{$ac='m';}}
print($ac);for($s=0;$s<$sn[$c];$s++){printf(" ");}$bc='o';if($h<6&&$h==$c){$bc='h';}
if($m<6&&$m==$c){if($h<6&&$h==$c){$bc='x';}else{$bc='m';}}
if($sn[$c]){print($bc);}printf("\n");if($c&&($c!=5)){printf("\n");}}

527 বাইট

আমার সি সমাধান:

main(){int x[]={8,4,1,0,1,4,8},y[]={0,7,13,15,13,7,0}
,h,m,z,c,s;scanf("%d:%d",&h,&m);h>12?h-=12:h;m/=5;
for(c=0;c<7;c++){for(s=0;s<x[c];s++){printf(" ");}z='o';
if(h>5&h-6==6-c){z='h';}if((m>5&m-6==6-c)|(m==c)&!c){
z='m';if(h>5&h-6==6-c){z='x';}}printf("%c",z);
for(s=0;s<y[c];s++){printf(" ");}z='o';if(h<6&h==c){
z='h';}if(m<6&m==c){z='m';if(h<6&h==c){z='x';}}
if(y[c]){printf("%c",z);}printf("\n");if(c&&(c!=5)){printf("\n");}}}

440 বাইট


1
পার্ল সম্পর্কে একটি দ্রুত পরামর্শ: আপনার প্যাসিক্সের দরকার নেই, আপনি স্টিডিনের সাথে সহজভাবে পড়তে পারেন <>এবং আমি মনে করি না যে আপনি printfএটি যেভাবে ব্যবহার করছেন সেটি আপনার printকাজ করবে, কাজ করবে :)
জোয়েল বার্গার

0

স্কেল 327 অক্ষর

object C extends App{
val R=List(2,4,6,8,10)
val r=1::R:::11::R.reverse
val C=List(3,6,12,18,21)
val c=1::C:::21::C.reverse
def p(n:Int,i:Char){
val z=r(n)
val s=c((n+3)%12)
printf("[%d;%dH"+i,z,s)}
val t=readLine.split(":")
val h=t(0).toInt%12
val m=t(1).toInt/5
(0 to 11).map(x=>p(x,'o'))
p(h,'h')
p(m,'m')
if(h==m)p(h,'x')}

আপনার লেবু-এক্সএক্সএক্সএক্সএক্স নয়, সঠিক বৃত্ত আকারের সাথে ব্যবহার করুন:

clear  && echo 5:43 | scala C 
           o
     o           o

  o                 o

o                    o

  m                 o

     o           h
           o

ungolfed:

object Clock {
 val R = List (2,4,6,8,10)
 val r = 1 :: R ::: 11 :: R.reverse
 val C = List (3,6,12,18,21)
 val c = 1 :: C ::: 22 :: C.reverse

 def pos (n: Int, i: Char)={
   val z = r (n) 
   val s = c ((n+3) % 12) 
   printf ("[%d;%dH" + i, z, s)
 }

 def main (args: Array [String]) {
   val t = args (0).split (":")
   val h = t (0).toInt % 12
   val m = t (1).toInt /  5
   (0 to 11).map (x=> pos (x, 'o'))
   pos (h, 'h') 
   pos (m, 'm')
   if (h == m) pos (h, 'x')
  }
}

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


0

পাইথন, 176 টি অক্ষর

o=map(ord,' .@Set~lWC2&!/0ABTUfgu')
h,m=map(int,raw_input().split(':'))
print''.join([' ',['\n','ohmx'[2*(i==o[m/5])+(i==o[h%12])]][i in o[:12]]][i in o]for i in range(24,127))

0

পার্ল ১৩১ টি অক্ষর

<>=~/:/;$h=$`%12;$m=$'/5;printf'%9s
%12$5s%8s

%11$2s%14s

%10$s%16s

%9$2s%14s

%8$5s%8s
%9s',map$_^$h?$_^$m?o:'m':$h^$m?h:x,0..11
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.