আসকি শিল্পে বর্তমান সময় আউটপুট


14

চ্যালেঞ্জ

আপনার কাজটি হ'ল আস্কি শিল্পে সময় (12 ঘন্টা সময়) আউটপুট করা।

সমস্ত অক্ষর যা ব্যবহার করা হবে তা নিম্নরূপ:

  ___    __   ___    ____    _  _     _____     __    ______ 
 / _ \  /_ | |__ \  |___ \  | || |   | ____|   / /   |____  |
| | | |  | |    ) |   __) | | || |_  | |__    / /_       / / 
| | | |  | |   / /   |__ <  |__   _| |___ \  | '_ \     / /  
| |_| |  | |  / /_   ___) |    | |    ___) | | (_) |   / /   
 \___/   |_| |____| |____/     |_|   |____/   \___/   /_/    

   ___     ___  
  / _ \   / _ \                                _
 | (_) | | (_) |   __ _ _ __    _ __ _ __     (_)
  > _ <   \__, |  / _` | '  \  | '_ \ '  \     _ 
 | (_) |    / /   \__,_|_|_|_| | .__/_|_|_|   (_)
  \___/    /_/                 |_|          

(প্রতিটি সংখ্যা / চিহ্নের জন্য স্বতন্ত্রভাবে, এই টুকরোটি পরামর্শ করুন )।

আপনি ফর্মের একটি অ্যারে ইনপুট পাবেন:

  • [hours, minutes, 'am/pm']। উদাহরণস্বরূপ, [4, 57, 'am']একক উদ্ধৃতি সহ কেবল am / pm ব্যবহার করা হয়
  • বা "hours-minutes-am/pm"। উদাহরণ স্বরূপ,"4-56-am"
  • বা [hours, 'minutes', 'am/pm']এমন ভাষার জন্য যা সংখ্যায় শীর্ষস্থানীয় শূন্যগুলি পরিচালনা করতে পারে না। উদাহরণ স্বরূপ,[4, '07', 'am']

আপনি হয় ইনপুট পদ্ধতি ব্যবহার করতে পারেন।

আউটপুটটি ফর্মটিতে থাকবে 1 2 : 5 9 am, যেখানে একটি প্রাথমিক স্থান আছে, প্রতিটি সংখ্যার মধ্যে দুটি স্পেস থাকবে (সংক্ষিপ্ত ভাষায়, প্রতিটি সংখ্যার ইতিমধ্যে প্রতিটি পাশের একটি করে স্পেস রয়েছে), এর মধ্যে একটি স্পেস: (কোলন) এবং পার্শ্ববর্তী সংখ্যা এবং একটি স্পেস থাকবে শেষ সংখ্যা এবং মধ্যেam/pm চ্ছিক নেতৃস্থানীয় এবং / অথবা নতুন লাইনের সাথে । সমস্ত স্থানগুলি বাম দিকে প্রতীকের ডান-সর্বাধিক বিন্দুর এবং ডানদিকে প্রতীকের বাম-সর্বাধিক বিন্দুর মধ্যে রয়েছে।

অন্তর্নির্মিত আউটপুট অনুমোদিত।

সর্বনিম্ন বাইট আকারের জয়।

am/pmযেমন যে নীচে প্রান্তিককৃত হবে pমধ্যে pmআউটপুট, যে undercore উপরের বাচক বাকি নীচে সঙ্গে সংযুক্ত করা হয় am/pmতৃতীয় লাইনটি নিচে শুরু হয়েছে (একটি নেতৃস্থানীয় সম্পর্কে newline গণনা নয়)।

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

জন্য minutes < 10, একটি নেতৃস্থানীয় সঙ্গে মিনিট আউটপুট 0(আপনি ইনপুট এ গ্রহণ করা উচিত)। উদাহরণস্বরূপ, [8, 04, 'pm']-> 8 : 0 4 pm

আপনার অবশ্যই কোনও গ্রন্থাগার বা বাহ্যিক সংস্থান থেকে সংখ্যার জন্য ডেটা আনতে হবে না। সমস্ত ডেটা অবশ্যই প্রোগ্রামের মধ্যে থাকা উচিত।

উদাহরণস্বরূপ, ইনপুটটির জন্য [12, 47, 'am'], আউটপুট নিম্নরূপ হবে:

  __    ___          _  _      ______  
 /_ |  |__ \    _   | || |    |____  | 
  | |     ) |  (_)  | || |_       / /   __ _ _ __ 
  | |    / /    _   |__   _|     / /   / _` | '  \
  | |   / /_   (_)     | |      / /    \__,_|_|_|_|
  |_|  |____|          |_|     /_/     

(আপনি যদি এমন কোন প্রান্তের মামলা দেখতে পান যা নিয়ে সিদ্ধান্ত নিতে পারেন না তবে দয়া করে মন্তব্যে পোস্ট করুন এবং আমি উদাহরণগুলিতে যুক্ত করব)।




@ মেগো আপনি গণনা করছেন? এই প্রশ্নটি কেবল (যে কোনও) সংখ্যাকে (খুব) বেসিক আসকি শিল্প হিসাবে রেন্ডার করে। এই প্রশ্নটি ascii আর্ট আপ করে তোলে, am / pm এবং কোলন যুক্ত করে এবং বিভিন্ন ধরণের মিশ্রণ সহ একটি অ্যারের সাথে ইনপুট নির্দিষ্ট করে।

বিশেষত: প্রশ্নটি হ'ল ক্লক-স্টাইলের সংখ্যা। সমস্ত সঠিক ফর্ম্যাটিং সহ এই প্রশ্নটি আসল সময়।

সংখ্যার বিভিন্ন ফর্ম্যাট এবং কোলন এবং am / pm এর সংযোজন ইমো প্রতিদ্বন্দ্বীদের পার্থক্য করতে খুব কম করে। চ্যালেঞ্জের প্রধান অংশটি এখনও পূর্ণসংখ্যাকে আসকি শিল্পে রূপান্তর করছে।
মেগো

9
@ মেগো আমি এটি একটি সদৃশ বলে মনে করি না। অন্য চ্যালেঞ্জের যে অতি সাধারণ বিন্যাস (এমনকি বাইনারি হিসাবে সংকোচনযোগ্য) আছে। এটি সম্ভবত আরও কলমোগরভ-জটিলতার মতো উত্তর পাবে।
পূর্কাকুডারী

উত্তর:


5

পার্ল, 592 579 540 522 510 বাইট

একটি সেক্টরের অধীনে!

($L,$C,$b)=unpack"W/aW/aB*",q!12346677889999 _|/\)(
'<,>.` PP¨ 
¨@T @ôäð˜SÀ§€fÌU`à¨Àäð'€GÖf`3 X½`fÍ5 s Î|½`gËÖ— $¡))õ™˜À8Sô BÁªx~O àÔýåËþÏÃÆ~O‡ŸY¬Àf s 
½`À*õŸ/X8|½`p>^€<¯å­kgúºÖ·Óʸ°ªÀj® kª¸•p¸å\×   ­ô!;@c=map{$i<<=$_-$P if$_>$P;$P=$_;sprintf"%${l}b",$i++}$L=~/./g;while($b){$b=~s/^$c[$_]// and$g.=($C=~/./sg)[$_]for 0..$#c}$_=pop;s/-/:/;y/apm-/;</d;for$a(0..5){map{$o.=substr((split$/,$g)[$a],($x=-48+ord)*12,('6356766766099'=~/./g)[$x]+3)}/./g;$o.=$/}print$o

এই প্রোগ্রামটি কমান্ডলাইন আর্গুমেন্ট হিসাবে দ্বিতীয় বিন্যাসে ( "12-34-am" ) সময়ের প্রত্যাশা করে ।

মন্তব্য করেছে:

($L,$C,$b) = unpack "W/aW/aB*",             # extract code lengths, chars, and bitstream
    q!12346677889999 _|/\)(
'<,>.` PP¨ 
¨@T @ôäð˜SÀ§€fÌU`à¨Àäð'€GÖf`3 X½`fÍ5 s Î|½`gËÖ— $¡))õ™˜À8Sô BÁªx~O àÔýåËþÏÃÆ~O‡ŸY¬Àf s 
½`À*õŸ/X8|½`p>^€<¯å­kgúºÖ·Óʸ°ªÀj® kª¸•p¸å\×   ­ô!;
@c = map {                                  # reconstruct huffman prefix codes
    $i <<= $_-$P if $_ > $P;                # increase code size
    $P = $_;                                # keep track of previous code
    sprintf "%${l}b", $i++                  # append code as bitstring
}
$L=~/./g;                                   # canonical huffman prefix lengths
while ( $b ) {                              # decompress font
        $b =~ s/^$c[$_]//                   # match and strip prefix code
        and $g .= ($C=~/./sg)[$_]           # append char for prefix code
    for 0..$#c                              # iterate prefix codes in order
}                                           # luckily we can omit checking trailing bytes    

$_ = pop;                                   # get cmdline arg "12-34-am"    
s/-/:/;                                     # ord(':')-ord('0')=10
y/apm-/;</d;                                # 'a'-> chr(11), 'p' -> chr(12), strip -,m
for $a (0..5) {                             # iterate 6 output lines
    map {                                   # iterate each char in input
        $o .= substr(
            ( split $/, $g )[$a],           # grab line $a
            ( $x=-48+ord ) * 12,            # $x=glyph index, 12=glyph width
            ('6356766766099'=~/./g)[$x]+3   # glyph display width
        )
    } /./g;
    $o .= $/                                # append newline
}
print $o                                    # output

নোট করুন চরিত্রের এনকোডিং সমস্যার কারণে আপনি যখন কোনও ফাইলের উপরের কোডটি পেস্ট করবেন তখন আউটপুটটি কিছুটা ত্রুটিযুক্ত হতে পারে। সুতরাং এখানে গল্ফ করা সংস্করণ, বেস -৪৪ এনকোডযুক্ত। এটি অনুলিপি করুন এবং এতে আটকান base64 -d > 510.pl:

KCRMLCRDLCRiKT11bnBhY2siVy9hVy9hQioiLHEhDjEyMzQ2Njc3ODg5OTk5DiBffC9cKSgKJzws
Pi5gFQBQAVACqAIgCqgBQBVUAqAFQAH05PAOmANTwBqngGbMBlVgHOAaqMDk8AcngEfWZmAzAA9Y
Ar1gZs0DNQBzoAHOBny9YGfL1g+XoAUkoSkp9ZmYDMAHOANT9A1Cwap4Bn5PABzgH9T9AeV/GBAB
y/7Pw8Z+Tx+Hn1mswGYAc6AKvWAMwCr1gZ8vWAc4Bny9YA5wPl6APK/lrWtn+rrWt9PKuAawBqrA
aq4AawGquAeVcA64AeVcAdcAAAABrfQhO0BjPW1hcHskaTw8PSRfLSRQIGlmJF8+JFA7JFA9JF87
c3ByaW50ZiIlJHtsfWIiLCRpKyt9JEw9fi8uL2c7d2hpbGUoJGIpeyRiPX5zL14kY1skX10vLyBh
bmQkZy49KCRDPX4vLi9zZylbJF9dZm9yIDAuLiQjY30kXz1wb3A7cy8tLzovO3kvYXBtLS87PC9k
O2ZvciRhKDAuLjUpe21hcHskby49c3Vic3RyKChzcGxpdCQvLCRnKVskYV0sKCR4PS00OCtvcmQp
KjEyLCgnNjM1Njc2Njc2NjA5OSc9fi8uL2cpWyR4XSszKX0vLi9nOyRvLj0kL31wcmludCRv

আমি যে ফন্টটি ব্যবহার করছি তা এখানে। সহজ সূচীকরণের জন্য আমি গ্লাইফগুলি 12 টি অক্ষর (am / pm এর আকার) পৃথক করে রেখেছি।

   ___        __          ___         ____        _  _        _____         __        ______       ___         ___            
  / _ \      /_ |        |__ \       |___ \      | || |      | ____|       / /       |____  |     / _ \       / _ \      _  
 | | | |      | |           ) |        __) |     | || |_     | |__        / /_           / /     | (_) |     | (_) |    (_)          __ _ _ __   _ __ _ __ 
 | | | |      | |          / /        |__ <      |__   _|    |___ \      | '_ \         / /       > _ <       \__, |     _          / _` | '  \ | '_ \ '  \
 | |_| |      | |         / /_        ___) |        | |       ___) |     | (_) |       / /       | (_) |        / /     (_)         \__,_|_|_|_|| .__/_|_|_|
  \___/       |_|        |____|      |____/         |_|      |____/       \___/       /_/         \___/        /_/                              |_|

এই ফন্টটি 592 বাইট।
পূর্ববর্তী পদ্ধতির LE৮ বাইট ডিকম্প্রেশন কোড ব্যয় করে এটিকে 353 বাইটে হ্রাস করতে আরএলই সংক্ষেপণের কয়েকটি পরিবর্তনের ব্যবহার হয়েছিল।
হাফম্যান কোডিং ডিকম্প্রেশন অ্যালগরিদমের জন্য 154 বাইটের দামে 221 বাইটে ফন্টটি সংকুচিত করে।


ধ্যাত্তেরি! আমি সত্যিই হাস্কেলের জন্য স্ট্রিং সংক্ষেপণ চাই ..
জে আতকিন

2

বাশ + জিএনইউ ইউটিলিটিস + ফ্লেলেট , 134

নিশ্চিত হতে পারছি না figlet বা অনুমোদিত যদি না হন, কিন্তু এটা সঠিক ফন্ট প্রদান বলে মনে হচ্ছে না - bigডিজিটের এবং smallজন্য :এবং {a,p}m:

f=figlet\ -f
b()(date +%$1|sed 's/./& /g'|$f big)
b -I|paste - <(echo "    ";$f small ": ") <(b M) <(echo;date +%P|$f small)|tr \\t \ 

বাকিগুলি কেবল সঠিক তথ্যটি পেয়েছে dateএবং চারপাশে ফর্মিংটি বদল করছে যাতে এটি ঠিক দেখাচ্ছে:

  ___          _____    ___    
 / _ \    _   | ____|  / _ \               
| (_) |  (_)  | |__   | | | |   __ _ _ __  
 > _ <    _   |___ \  | | | |  / _` | '  \ 
| (_) |  (_)   ___) | | |_| |  \__,_|_|_|_|
 \___/        |____/   \___/               

সঙ্গে উবুন্টুতে ফিগলেট ইনস্টল করা যেতে পারে sudo apt-get install figlet


ওও এই ফাঁকটির কথা ভাবেনি। প্রোগ্রামটিতে চরিত্রের ডেটা অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করার জন্য আমি প্রশ্নটি সম্পাদনা করব, তবে আপনার জমাটি রাখুন এবং এটি নিষ্ক্রিয় লেবেল করুন - এটি এখনও একটি ভাল।

2
তবে আমি সংখ্যাগুলির জন্য ডেটা পেতে ফ্লেলেট ব্যবহার করেছি, সুতরাং এটি বের করার জন্য +1 :)

কেবল এটি পরিষ্কার করার জন্য: ফন্টগুলি বাহ্যিক উত্স থেকে বা লাইব্রেরি থেকে লোড করা যায় না।

2

সি ++, 938 বাইট

ইনপুট ডেটার কয়েকটি প্রাথমিক সংকোচনের সাথে সংশোধিত সংস্করণ: এখানে পরীক্ষা করুন

#include <stdio.h>
#include <time.h>
int main(){char e[]="!1`2!3`1!2`1!4`2!4`!1`!4`4!4`1!3`5!4`2!4`2!35^!`!]!1^`!}!}`1!]!1}`2!]!1}!}1!}!2}!`3}!2^!^!2}`3!1}!2^!`!]!2^!`!]!31`!}!}!}!}!1}!}!3*!}!2`1*!}!}!}1!}`!1}!}`1!3^!^`!6^!^!2}!)`*!}!}!)`*!}!2`1!`!`!`1!3`!`1!`!`1!4)`*}!}!}!}!1}!}!2^!^!2}`1!=!1}`1!2`}!}`2!]!1}!(`!]!4^!^!4?!`!=!2]`1-!}!1^!`a!}!(!1]!1}!(`!]!(!1]!4`!}!}`}!}!1}!}!1^!^`!2`2*!}!3}!}!3`2*!}!}!)`*!}!2^!^!4}!)`*!}!3^!^!2]`1-`}`}`}`}!}!/`1^`}`}`}!2)`*!]`2^!2}`}!}`3}!}`3^!4}`}!2}`3^!2]`2^!2^`^!6]`2^!3^`^!16}`}!14",l[]="8578988998>?3",f[666],*q=f,*p=e,c,r;time_t z;time(&z);tm*u=localtime(&z);while(*p){if(*p>47&&*p<58){r=*p++-48;if(*p>47&&*p<58)r=r*10+*p++-48;while(r--)*q++=c;}else{*q++=c=*p++==94?48:p[-1];}}c=u->tm_hour;sprintf(e,"%02d<%02d%c",c%12,u->tm_min,':'+c/12);for(int s,n,o,r=0;r<6;r++){for(q=e;*q;q++){o=r*111;for(n=0; n<*q-48;n++)o+=l[n]-48;s=l[n]-48;for(n=o;n<o+s;n++)putchar(f[n]-1);}putchar('\n');}return 0;}

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

2

হাস্কেল, 932 699 বাইট

হ্যাঁ, 700 বাইটের নিচে !!

t=transpose
i=intercalate
l=lines
u=unlines
s=show
c(h,m,a)=u$t$l(i(r"!!\n!!\n")(map d(s h++':':(if m<10 then '0':s m else s m)))++r"!!"++(d$a!!0))
e s z n=i s$splitOn z n
r=e"   ""!"
d 'a'=b 10
d 'p'=b 11
d ':'=b 12
d n=b$read[n]
b n=splitOn(r"!!")(u$t$l$r$e" |""@"$e"___""$"$e"_|""~"$e"!!""*"$e"_ ""#""  $! __!$! $_! # _!  $__!  __! $$! $!  $*****  \n / #\\  /_@@_#\\ @$ \\ @@|@!| $~!/ /!|$#@  / #\\!/ #\\****!  #\n|@@@ @@! )@!__)@@@|@#@@__! / /_* / / @ (_)@@ (_)@  _###__! #_##__!(_)\n|@@@ @@!/ /!|_#< @__!~@$ \\ @ '#\\!  / /! > #<!\\__,@ / _`@ '  \\ @ '#\\ '  \\!#\n|@~@ @@  / /_!$)@!@@! $)@@ (_)@!/ /!@ (_)@! / /  \\__,~~~~@ .__/~~~ (_)\n \\$/!|~@$~@$_/! @~!|$_/!\\$/!/_/*\\$/! /_/**!@~** ")!!n

কিছুটা নাগালিত

module Clock where
import Data.Lists

main :: IO ()
main = putStr $ clock (5,05,"am")

clock :: (Int, Int, String) -> String
clock (h,m,a) | m <- if m < 10 then '0':show m else show m
              , hm <- intercalate "      \n      \n" (map digit (show h ++ ':' :m))
              =  unlines $ transpose $ lines (hm ++ "      "++(digit$a!!0))

digit :: Char -> String
digit 'a' = numbers 10
digit 'p' = numbers 11
digit ':' = numbers 12
digit n = numbers (read [n])


numbers :: Int -> String
numbers n = splitOn "      " (unlines $ transpose $ lines "  ___    __   ___    ____    _  _     _____     __    ______    ___     ___                                \n / _ \\  /_ | |__ \\  |___ \\  | || |   | ____|   / /   |____  |  / _ \\   / _ \\                             _ \n| | | |  | |    ) |   __) | | || |_  | |__    / /_       / /  | (_) | | (_) |  __ _ _ __    _ __ _ __   (_)\n| | | |  | |   / /   |__ <  |__   _| |___ \\  | '_ \\     / /    > _ <   \\__, | / _` | '  \\  | '_ \\ '  \\   _ \n| |_| |  | |  / /_   ___) |    | |    ___) | | (_) |   / /    | (_) |    / /  \\__,_|_|_|_| | .__/_|_|_| (_)\n \\___/   |_| |____| |____/     |_|   |____/   \\___/   /_/      \\___/    /_/                |_|             ") !! n

কিভাবে এটা কাজ করে

(এটি বেশিরভাগই অসম্পূর্ণ প্রোগ্রামটি কাজ করে)

clock :: (Int, Int, String) -> String
clock (h,m,a) | m <- if m < 10 then '0':show m else show m
              , hm <- intercalate "      \n      \n" (map digit (show h ++ ':' :m))
              =  unlines $ transpose $ lines (hm ++ "      "++(digit$a!!0))

clockসময়ের একটি সময় নেয় এবং একটি স্ট্রিং প্রদান করে। mনেতৃস্থানীয় 0যোগ সঙ্গে এটি যদি বর্তমান মিনিট হয় <10hmঘন্টা এবং মিনিট একটি সাথে যোগ হয়েছে :। এটি শেষ কাজটি করে আউটপুট স্থানান্তর

digit :: Char -> String
digit 'a' = numbers 10
digit 'p' = numbers 11
digit ':' = numbers 12
digit n = numbers (read [n])

এখানে মোটামুটি সহজ। digitএকটি ফাংশন যা সঞ্চিত স্ট্রিংয়ের অবস্থানগুলিতে চরগুলি মানচিত্র করে।

numbers :: Int -> String
numbers n = splitOn "      " (unlines $ transpose $ lines  replace" |""@"$replace"___""$"$replace"_|""~"$replace"!!""*"$replace"_ ""#""  $! __!$! $_! # _!  $__!  __! $$! $!  $*****  \n / #\\  /_@@_#\\ @$ \\ @@|@!| $~!/ /!|$#@  / #\\!/ #\\****!  #\n|@@@ @@! )@!__)@@@|@#@@__! / /_* / / @ (_)@@ (_)@  _###__! #_##__!(_)\n|@@@ @@!/ /!|_#< @__!~@$ \\ @ '#\\!  / /! > #<!\\__,@ / _`@ '  \\ @ '#\\ '  \\!#\n|@~@ @@  / /_!$)@!@@! $)@@ (_)@!/ /!@ (_)@! / /  \\__,~~~~@ .__/~~~ (_)\n \\$/!|~@$~@$_/! @~!|$_/!\\$/!/_/*\\$/! /_/**!@~** ")!!n

এটি ম্যাজিক স্টোর করা স্ট্রিং।

গল্ফযুক্ত এবং উচ্চারিত প্রোগ্রামগুলির মধ্যে একমাত্র আসল পরিবর্তনটি হ'ল যে গল্ফযুক্ত প্রোগ্রামটি কিছু সাধারণ চর বিন্যাসগুলি প্রতিস্থাপন করে কিছু স্ট্রিং সংক্ষেপণ যুক্ত করে !@$। মূল ডেটা স্ট্রিংটি 667বাইট ছিল , প্রতিস্থাপন সংক্ষেপণের পরে এটি 390বাইটে নেমে গেছে


1

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

কাঁচা ডেটা সহ ভয়াবহ প্রয়াস মোটেই সংকুচিত হয়নি, এবং আউটপুট দেওয়ার জন্য খুব জটিল method

তবে ওহে ... এটি আমার দ্বিতীয় কোডগল্ফের উত্তর মাত্র!

d="   ___   !  / _ \\  ! | | | | ! | | | | ! | |_| | !  \\___/  0  __  ! /_ | !  | | !  | | !  | | !  |_| 0  ___   ! |__ \\  !    ) | !   / /  !  / /_  ! |____| 0  ____   ! |___ \\  !   __) | !  |__ <  !  ___) | ! |____/  0  _  _    ! | || |   ! | || |_  ! |__   _| !    | |   !    |_|   0  _____  ! | ____| ! | |__   ! |___ \\  !  ___) | ! |____/  0    __   !   / /   !  / /_   ! |  _ \\  ! | (_) | !  \\___/  0  ______  ! |____  | !     / /  !    / /   !   / /    !  /_/     0   ___   !  / _ \\  ! | (_) | !  > _ <  ! | (_) | !  \\___/  0   ___   !  / _ \\  ! | (_) | !  \\__, | !    / /  !   /_/   0   ! _ !(_)! _ !(_)!   0!! __ _ _ __ !/ _` | '  \\!\\__,_|_|_|_|!0!! _ __ _ __ !| '_ \\ '  \\!| .__/_|_|_|!|_|".split(0);
f=a=>{t="toString",s="split",h=a[0][t]()[s](""),m=a[1][s](""),p=a[2]=='am'?11:12,g=h.length>1?1:0,r="";for(i=0;i<6;i++){r+=d[h[0]][s]('!')[i];r+=(g&&1)?d[h[1]][s]('!')[i]:"";r+=d[10][s]('!')[i]+d[m[0]][s]('!')[i]+d[m[1]][s]('!')[i]+d[p][s]('!')[i]+"\n"}return r}

পুরানো জমা (994 বাইট) :

d=["   ___   !  / _ \\  ! | | | | ! | | | | ! | |_| | !  \\___/  ","  __  ! /_ | !  | | !  | | !  | | !  |_| ","  ___   ! |__ \\  !    ) | !   / /  !  / /_  ! |____| ","  ____   ! |___ \\  !   __) | !  |__ <  !  ___) | ! |____/  ","  _  _    ! | || |   ! | || |_  ! |__   _| !    | |   !    |_|   ","  _____  ! | ____| ! | |__   ! |___ \\  !  ___) | ! |____/  ","    __   !   / /   !  / /_   ! |  _ \\  ! | (_) | !  \\___/  ","  ______  ! |____  | !     / /  !    / /   !   / /    !  /_/     ","   ___   !  / _ \\  ! | (_) | !  > _ <  ! | (_) | !  \\___/  ","   ___   !  / _ \\  ! | (_) | !  \\__, | !    / /  !   /_/   ","   ! _ !(_)! _ !(_)!   ","!! __ _ _ __ !/ _` | '  \\!\\__,_|_|_|_|!","!! _ __ _ __ !| '_ \\ '  \\!| .__/_|_|_|!|_|"];
f=a=>{
    t="toString",s="split",h=a[0][t]()[s](""),m=a[1][s],p=(a[2]=='am')?11:12,g=(h.length>1)?1:0,r="";
    for(i=0;i<6;i++){
        r+=d[h[0]].s('!')[i];
        r+=g&&1?d[h[1]].s('!')[i]:"";
        r+=d[10].s('!')[i]+d[m[0]].s('!')[i]+d[m[1]].s('!')[i]+d[p].s('!')[i]+"\n"
    }
return r
}

এটি পড়া সহজ করার জন্য লাইনে বিভক্ত করুন।

মূলত:

var f = function (a) {
  hours = a[0].toString().split(""), // convert hours to a string then array to
                                    // handle single and and double numbers
  minutes = a[1].split(""), // ditto with minutes
  period = a[2] == "am" ? 11 : 12, // if it is am, get data[11], if pm, get data[12]
  g = hours.length > 1 ? 1 : 0, // if hours > 9, then g is true
  r = ""; // the string that will be returned
for (i = 0; i < 6; i++) {
    r += data[hours[0]].split("!")[i]; // add the first digit of hours to r
    r += g && 1 ? data[hours[1]].split("!")[i] : ""; // if g is true, add the second 
                                                    //digit of hours to r
    r += data[10].split("!")[i] + // colon
    data[minutes[0]].split("!")[i] + // first digit of minutes
    data[minutes[1]].split("!")[i] + // second digit of minutes
    data[period].split("!")[i] + // am/pm
    "\n"; // and finally linebreak.
  } // entire loop repeated six times, each iteration adds one line to the string
return r; // return the string
};

0

পাইথন 3, 1085 1072 বাইট

Golfed

def f(h,c="",n=["   ___   @  / _ \  @ | | | | @ | | | | @ | |_| | @  \___/  ","  __  @ /_ | @  | | @  | | @  | | @  |_| ","  ___   @ |__ \  @    ) | @   / /  @  / /_  @ |____| ","  ____   @ |___ \  @   __) | @  |__ <  @  ___) | @ |____/  ","  _  _    @ | || |   @ | || |_  @ |__   _| @    | |   @    |_|   ","  _____  @ | ____| @ | |__   @ |___ \  @  ___) | @ |____/  ","    __   @   / /   @  / /_   @ |  _ \  @ | (_) | @  \___/  ","  ______  @ |____  | @     / /  @    / /   @   / /    @  /_/     ","   ___   @  / _ \  @ | (_) | @  > _ <  @ | (_) | @  \___/  ","   ___   @  / _ \  @ | (_) | @  \__, | @    / /  @   /_/   ","   @ _ @(_)@ _ @(_)@   ","            @            @ __ _ _ __ @/ _` | '  \@\__,_|_|_|_|@            ","            @            @ _ __ _ __ @| '_ \ '  \@| .__/_|_|_|@|_|"]):
 for i in range(6):
  for j in range(3):
   if j<2:
    x=int(h[j]);d=x//10;u=x%10
    if d>0 or j>0:c+=n[d].split("@")[i]
    c+=n[u].split("@")[i]
    if j==0:c+=" "+n[10].split("@")[i]+" "
   else:y=11 if h[j]=="am" else 12;c+=" "+n[y].split("@")[i]
  c+="\n"
 return c

Ungolfed

import os
from time import ctime

def asciiClock(hour):
    num = ["   ___   @  / _ \  @ | | | | @ | | | | @ | |_| | @  \___/  @","  __  @ /_ | @  | | @  | | @  | | @  |_| @",
   "  ___   @ |__ \  @    ) | @   / /  @  / /_  @ |____| @","  ____   @ |___ \  @   __) | @  |__ <  @  ___) | @ |____/  @",
   "  _  _    @ | || |   @ | || |_  @ |__   _| @    | |   @    |_|   @","  _____  @ | ____| @ | |__   @ |___ \  @  ___) | @ |____/  @",
   "    __   @   / /   @  / /_   @ |  _ \  @ | (_) | @  \___/  @","  ______  @ |____  | @     / /  @    / /   @   / /    @  /_/     @",
   "   ___   @  / _ \  @ | (_) | @  > _ <  @ | (_) | @  \___/  @","   ___   @  / _ \  @ | (_) | @  \__, | @    / /  @   /_/   @",
   "   @ _ @(_)@ _ @(_)@   @","            @            @ __ _ _ __ @/ _` | '  \@\__,_|_|_|_|@            @",
   "            @            @ _ __ _ __ @| '_ \ '  \@| .__/_|_|_|@|_|@"]
    clock = ""
    for i in range(6):
        for j in range(3):
            if j < 2:
                x = int(hour[j])
                d = x // 10
                u = x % 10
                if d > 0 or j > 0:
                    clock += num[d].split("@")[i]
                clock += num[u].split("@")[i]
                if j == 0:
                    clock += " " + num[10].split("@")[i] + " "
            else:
                y = 11 if hour[j] == "am" else 12
                clock += " " + num[y].split("@")[i]
        clock += "\n"
    return clock

previousMinute = -1
while True:
    hour = ctime().split()[3].split(":")
    h = int(hour[0])
    m = hour[1]
    x = "am" if h < 12 else "pm"
    if h > 12:
        h -= 12
    if  previousMinute != m:
        os.system("clear") # if using Windows change to "cls"
        print(asciiClock([h, m, x]))
    previousMinute = m
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.