একটি অ্যানালগ ঘড়ি তৈরি [বন্ধ]


16

এমন একটি প্রোগ্রাম লিখুন যা ASCII গ্রাফিক্স ব্যবহার করে বর্তমান সিস্টেমের সময়কে অ্যানালগ ঘড়ি হিসাবে প্রদর্শন করে। ঘড়িতে অবশ্যই কমপক্ষে ঘন্টা এবং মিনিট পয়েন্টার দেখাতে হবে এবং এতে কমপক্ষে 5 মিনিটের পর্যাপ্ত রেজোলিউশন থাকতে হবে।

ডিসপ্লেটি আপনার ইচ্ছে মতো ছোট এবং কুৎসিত হতে পারে তবে প্রদর্শিত সময়টি সহজেই স্বীকৃতিযোগ্য।

প্রোগ্রামটি অবিচ্ছিন্নভাবে চলতে হবে এবং তার স্থিতি আপডেট করতে হবে। যদি আপনার সিস্টেমটি স্ক্রিনটি সাফ করতে পারে তবে এটি ব্যবহার করুন, অন্যথায় এটির অবস্থা পরিবর্তিত হলে ঘড়ির পুনরায় রঙ করা যথেষ্ট।

যদি ঘড়ির কমপক্ষে 1 মিনিটের রেজোলিউশন থাকে তবে আপনি অক্ষর গণনায় একটি -20% বোনাস পান।


আপনি যখন এনালগ ঘড়িটি বলছেন তখন কি আপনার বোঝার সময়টি স্বাভাবিকভাবেই বা কোনও সময়ের অ্যানালগের সম্প্রচারের কোনও রূপ?
মার্কো মার্টিনেল্লি

1 সেকেন্ড রেজোলিউশনের জন্য অতিরিক্ত বোনাস?
শ্মিদ্দী

এটি কি বাস্তবের জন্য "-20% বোনাস পান"? এটা কি ইতিবাচক হওয়া উচিত নয়?
টিমটেক

@ টিমটেক: আপনি যদি সত্যিই এটি চান তবে আমি আপনার চরিত্রের গণনায় 20% যোগ করতে পারতাম ...
vsz

@vsz আপনার অর্থ কী?
টিমটেক

উত্তর:


10

গণিত 207 - 42 = 165

টিক্স এবং ঘন্টা লেবেল ইউনিট বৃত্তে স্থাপন করা হয়। Hএবং Mযথাক্রমে সম্পূর্ণ হওয়া ঘন্টা এবং মিনিটের পুরো সংখ্যাটি দেখায় ঘড়ির কেন্দ্রের চারপাশে ঘুরে। Sপ্রতি সেকেন্ডে কয়েকবার এর অবস্থান আপডেট করে।

দুটি সংস্করণ দেখানো হয়েছে: একটি সংস্করণ যা কার্টেসিয়ান বিমানে পাঠ্য প্লট করে এবং অন্যটি গ্রিডে পাঠ্য অক্ষর প্রদর্শন করে।

এই সংস্করণটি কার্টেসিয়ান সমতলে চরিত্রগুলি প্লট করে।

d = Dynamic; t = Table; x = Text;i_~u~k_ := {Sin[2 \[Pi] i/k], Cos[2 \[Pi] i/k]};
d[{f = Date[], Clock[{1, 1}, 1]}]
Graphics[d@{t[x[".", u[i, 60]], {i, 60}],t[x[i, u[i, 12]], {i, 12}],
x["H", .7 u[f〚4〛, 12]],x["M", .8 u[f〚5〛, 60]],x["S", .9 u[f〚6〛, 60]]}]

নীচের ঘড়িটি সময় দেখায় 3:08:17

ঘড়ি

টার্মিনাল বা গ্রিড সংস্করণ : 430 316 অক্ষর (বোনাস ছাড় সহ 253)

এই সংস্করণটি একই কাজ করে তবে কার্টেসিয়ান বিমানের চেয়ে 61 x 61 সেল গ্রিডে অক্ষরগুলি রাখে। এটা এখনও একটি বিট golfed যেতে পারে, কিন্তু আমি নিছক একটি (sloppier) দেখানোর জন্য টার্মিনাল মত আউটপুট চেয়েছিলেন ম্যাথামেটিকাল

d = Dynamic; i_~u~k_ := Round /@ (10 {Sin[2 \[Pi] (i + 3 k/4)/k], 
Cos[2 \[Pi] (i + 3 k/4)/k]}); d[{f = Date[], Clock[]}]
z = Round /@ (# u[f[[#2]], #3] + 11) -> #4 &;
t = Table[( u[i, 12] + 11) -> i, {i, 12}];
d@Grid[ReplacePart[ConstantArray["", {21, 21}],
Join[z @@@ {{.9, 5, 60, "M"}, {.8, 4, 12, "H"}},
DeleteCases[Table[( u[i, 60] + 11) -> "*", {i, 60}], x_ /; MemberQ[t[[All, 1]], x[[1]]]], t]]]

নীচের ঘড়িটি 11:06 প্রদর্শন করে ।

টার্মিনাল ঘড়ি


শুধুই মজার জন্য:

এখানে অ্যানালগ ঘড়ির একটি অ-এসকি সংস্করণ। (Rs০ অক্ষর) কোনও বাহ্যিক গ্রন্থাগার ব্যবহার করা হয়নি।

Dynamic@Refresh[ClockGauge@AbsoluteTime[], UpdateInterval -> 1]

clock3


2
আমার কাছে ASCII আর্টের মতো দেখাচ্ছে না।
জো জেড।

3
আমি উইকিপিডিয়ায় প্রদত্ত সংজ্ঞাটি অনুসরণ করেছিলাম: "এএসসিআইআই আর্ট একটি গ্রাফিক ডিজাইন কৌশল যা উপস্থাপনের জন্য কম্পিউটার ব্যবহার করে এবং ১৯6363 সাল থেকে এএসসিআইআই স্ট্যান্ডার্ড দ্বারা বর্ণিত 95 মুদ্রণযোগ্য (মোট 128 টি) অক্ষর এবং একসাথে ছবিযুক্ত সমন্বিত ছবিগুলি সমন্বিত থাকে মালিকানা বর্ধিত অক্ষর (মান 7-বিট ASCII এর 128 টি অক্ষরের বাইরে) সেট করে The এই শব্দটি সাধারণভাবে পাঠ্যভিত্তিক ভিজ্যুয়াল আর্টকে বোঝাতেও আলগাভাবে ব্যবহৃত হয় ""
ডেভিডসি

2
হুম। আমি মনে করি এটি কাজ করে। যদিও আমি আশা করি বনাম টার্মিনাল শিল্পের প্রত্যাশা করেছিল। সম্ভবত তিনি স্পষ্ট করতে পারেন।
জো জেড।

14

জাভাস্ক্রিপ্ট 370 - 74 = 296

http://jsfiddle.net/wBKQ6/7/

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

(function loop(){
    M=Math;p=M.PI/2;z=M.pow;q=M.sqrt;d=new Date();h=(d.getHours()%12/3*p+p)%(p*4);m=(d.getMinutes()/15*p+p)%(p*4);s=(d.getSeconds()/15*p+p)%(p*4);e=49;o='';

    for(r=0;r<99;r++){
        for(c=0;c<99;c++){           
            d=q(z(r-e,2)+z(c-e,2));
            a=(M.atan2(e-r,e-c)+p*4)%(p*4);
            E=(d<e*.8&&M.abs(m-a)*d<.5) || (d<e*.5&&M.abs(h-a)*d<.5) || (d<e*1&&M.abs(s-a)*d<.5);
            o+=d-e>0||d<1||E||(e-d<5&&a%p==0)?'●':'○';
            //■□●○
        }
        o+='\n';
    }
    O.innerText=o
    setTimeout(loop,1000);
})()

গল্ফড (370):

!function L(){p=M.PI/2;q=p*4;P=M.pow;d=new Date();s=(d.getSeconds(S=d.getMinutes(e=40))/15*p+p)%q;m=(S/15*p+p)%q;h=(d.getHours(A=M.abs)%12/3*p+S/180*p+p)%q;for(r=o='';r<81;r++,o+='\n')for(c=0;c<81;){d=M.sqrt(P(r-e,2)+P(c-e,2));a=(M.atan2(e-r,e-c++)+q)%q;o+='○●'[d-e>0|d<e*.8&A(m-a)*d<1|d<e/2&A(h-a)*d<1|d<e&A(s-a)*d<1|e-d<5&a%p==0]}O.innerText=o;setTimeout(L,9)}(M=Math)

নমুনা আউটপুট (ডেমোতে অনেক বেশি সংশ্লেষিত):

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●○○○○○○●○○○○○○●●●●●●●●●●●●●●
●●●●●●●●●●●●○○○○○○○○●○○○○○○○○●●●●●●●●●●●●
●●●●●●●●●●○○○○○○○○○○●○○○○○○○○○○●●●●●●●●●●
●●●●●●●●○○○○○○○○○○○○●○○○○○○○○○○○○●●●●●●●●
●●●●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●●●●
●●●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●●●
●●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●●
●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●
●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●
●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●
●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●
●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●
●●○○○○○○○○○○○○○○○○○○○○○○○○○●○○○○○○○○○○○●●
●○○○○○○○○○○○○○○○○○○○○○○○○○●●○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○○○○○○○●●○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○○○○○○●●○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○○○○○●●○○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○○○○●
●●●●●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●●●●●
●○○○○○○○○○○○○○○○○○○●○●○○○○○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○○●○○●○○○○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○●○○○○●●○○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○○●○○○○○●●○○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○○●○○○○○○○●●○○○○○○○○○○○○○●
●○○○○○○○○○○○○○○○●●○○○○○○○○●●○○○○○○○○○○○○●
●●○○○○○○○○○○○○○○●○○○○○○○○○○○●○○○○○○○○○○●●
●●○○○○○○○○○○○○○●○○○○○○○○○○○○○●○○○○○○○○○●●
●●●○○○○○○○○○○○○●○○○○○○○○○○○○○○●○○○○○○○●●●
●●●○○○○○○○○○○○●○○○○○○○○○○○○○○○○●○○○○○○●●●
●●●●○○○○○○○○○○●○○○○○○○○○○○○○○○○○●○○○○●●●●
●●●●○○○○○○○○○●○○○○○○○○○○○○○○○○○○○●●○○●●●●
●●●●●○○○○○○○●●○○○○○○○○○○○○○○○○○○○○●●●●●●●
●●●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●●●
●●●●●●●○○○○○○○○○○○○○○○○○○○○○○○○○○○●●●●●●●
●●●●●●●●○○○○○○○○○○○○●○○○○○○○○○○○○●●●●●●●●
●●●●●●●●●●○○○○○○○○○○●○○○○○○○○○○●●●●●●●●●●
●●●●●●●●●●●●○○○○○○○○●○○○○○○○○●●●●●●●●●●●●
●●●●●●●●●●●●●●○○○○○○●○○○○○○●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

আমি দ্বিতীয় হাতটি সরিয়ে ফেললে আমি সম্ভবত স্কোরটি 263 এর নীচে আনতে পারি, তবে আমি এটি পছন্দ করি!
শ্মিদ্দী

3
স্মাইলি মুখগুলিও
Shmiddty

ঝাঁকুনি কাজ করছে না ...
ম্যাথ চিলার

@ryingToGetProgrammingStraight এটি ক্রোম 30 এ আমার জন্য কাজ করছে
শ্মিদ্দী

আমি ফায়ারফক্স ২৪.০ চালাচ্ছি, ক্রোমে এটি চেষ্টা করেছি - এটি কাজ করেছে, আপনি যদি সম্পাদনা করেন তবে আমি কেবল আমার ভোট পরিবর্তন করতে পারি ...
ম্যাথ চিলার

12

পাইথন, 328 - 65 = 263

প্রতি মিনিটে মিনিটের হাত আপডেট হওয়ার সাথে সাথে প্রতি সেকেন্ডে একটি নতুন ঘড়ি প্রিন্ট করা হয়।

import math,time
def p(t,r):c[int(25-r*math.cos(t))][int(25+r*math.sin(t))]='*'
while 1:
 time.sleep(1);c=[[' ']*50 for i in range(50)];t=time.localtime();h=t.tm_hour*6.283+t.tm_min/9.549
 for i in range(999):
    p(i/158.0,24);p(h,i*.02);p(h/12,i*.01)
    for q in range(12):p(q/1.91,24-i*.005)
 for y in range(50):print''.join(c[y])

এটি যে ছড়িগুলি প্রিন্ট করে তা দেখতে (এটি আমার টার্মিনালের মতো প্রসারিত নয়):

                  **************                  
               ****      *     ****               
             ***         *        ***             
           ***           *          ***           
          ** **          *         ** **          
         **   *                    *   **         
        **    **                  **    **        
       *       *                  *      **       
      **                                  **      
     **                                    **     
    **                                      **    
    *                                        *    
   ***                                      ***   
   * ***                                  *** *   
  **   **                                **   **  
  *                                            *  
  *                                            *  
 **                                            ** 
 *                                              * 
 *   *                                          * 
 *   ******                                     * 
 *        ******                                * 
 *             ******                           * 
 *                  *****                       * 
 *****                   *                  ******
 *                       **                     * 
 *                        **                    * 
 *                         *                    * 
 *                         **                   * 
 *                          **                  * 
 **                          **                ** 
  *                           *                *  
  *                           *                *  
  **   **                                **   **  
   * ***                                  *** *   
   ***                                      ***   
    *                                        *    
    **                                      **    
     **                                    **     
      **                                  **      
       *       *                  *       *       
        **    **                  **    **        
         **   *                    *   **         
          ** **          *         ** **          
           ***           *          ***           
             ***         *        ***             
               ****      *     ****               
                  **************                  
                         *                        

কেউ কীভাবে সেকেন্ড পড়বে?
ডেভিডসি

1
এক না। এটি প্রতি সেকেন্ডে মুদ্রণ করে তবে প্রতি মিনিটে কেবল আপডেট হয়।
পিচবোর্ড_বক্স

8

100% খাঁটি শুধুমাত্র! কাঁটাচামচ ছাড়া!

একটি চূড়ান্ত ও আপগ্রেড সংস্করণ সেখানে বা এই পৃষ্ঠায় পাওয়া যাবে : গিক্সের জন্য আসকি-ক্লক । তবে এটি ব্যবহার করবেন না! এই উত্তরের শেষে নোটটি পড়ুন, আপনাকে সতর্ক করা হয়েছে! পরিবর্তে এই পার্ল সংস্করণ ব্যবহার করুন!

দ্বিতীয় টিক ছাড়া প্রথম সরল ঘড়ি।

স্কেলেবল এবং এডিটেবল:

time 2>&1 /tmp/asci-art.sh 10 10 10
              . . . 12. . .               
          11.               . 1           
        .                       .         
      .                           .       
    .                               .     
  10                                  2   
  .     H                           M .   
.                                       . 
.                                       . 
.                                       . 
9                                       3 
.                                       . 
.                                       . 
.                                       . 
  .                                   .   
  8                                   4   
    .                               .     
      .                           .       
        .                       .         
          7 .               . 5           
              . . . 6 . . .               


real    0m0.356s
user    0m0.348s
sys     0m0.004s

এক সেকেন্ডেরও কম সময়ে 10H10 এ 21x21 (10x2 + 1) ঘড়ি আঁকুন।

এটি 3 টি আর্গুমেন্ট গ্রহণ করে: Usage: ascii-clock.sh [ray of clock] [Hour] [Min]যেখানে ডিফল্ট রশ্মি 12 হয়, ঘড়ির আঁকাগুলি 2 x ray + 1লাইন উচ্চতা এবং দ্বিগুণ প্রস্থ হয় কারণ গোলাকৃতি আকারটি অর্জনের চেষ্টা করার জন্য স্থান যুক্ত হয়।

স্ক্রিপ্ট সহ যদি ডাকা হয় 01 যুক্তি বা যুক্তি এটি প্রতি মিনিটে পুনরায় আঁকতে লুপ হয়ে যায়। অন্যথায় যদি কমপক্ষে ঘন্টা (দ্বিতীয় প্যারাম) নির্দিষ্ট করা থাকে তবে এটি কেবল একবার আঁকবে এবং প্রস্থান করবে।

Hমার্কার রশ্মি 70% এ অবস্থিত এবং Mমার্কার রশ্মি 90% অবস্থিত।

datebcড্র বা মত বা বহিরাগত বাইনারি কোন ব্যবহার !

(জন্য ধন্যবাদ @manatwork করার builtin read -t যদি জায়গায় /bin/sleep)।

সুতরাং এই সব দ্বারা সম্পন্ন হয় বিল্টিন শেল কমান্ড ।

এটি এএনএসআই ব্যবহার করে ক্রম তবে কেবল লুপের জন্য এবং চিহ্নিতকারীদের সাহসী করে তোলে make

#!/bin/bash
# Analog clock in Ascii-Art written in BASH V4.2 +=

RAY=${1:-12} NowH=$2 NowM=$3

sqrt() {
    local -a _xx=(600000 200000)
    local _x1=${_xx[$(($1&1))]} _x0=1
    while [ $_x0 -ne $_x1 ] ;do
        _x0=$_x1
        [ $_x0 -eq 0 ] && _x1=0000 || 
        printf -v _x1 "%u" $(( (${_x0}000 + ${1}00000000000/${_x0} )/2 ))
        printf -v _x1 "%.0f" ${_x1:0:${#_x1}-3}.${_x1:${#_x1}-3}
    done
    _x1=0000$_x1
    printf ${2+-v} $2 "%.3f" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}-4}
}
clksin() { # $1:moment [0-60], $2:path length, $3:variable name
    local _csin=(0 104528 207912 309017 406737 500000 587785 669131
        743145 809017 866025 913545 951057 978148 994522 1000000)
    local xsign=1 x=$1 ysign=-1 y=$1
    [ $x -gt 30 ] && xsign=-1 x=$((60-x)) 
    [ $x -gt 15 ] && x=$((30-x))
    x=00000$((RAY*1000000+xsign*${2:-10}*${_csin[$x]}))
    [ $y -gt 30 ] && y=$((60-y))
    [ $y -gt 15 ] && ysign=1 y=$((30-y))
    y=00000$((RAY*1000000+ysign*${2:-10}*${_csin[15-$y]}))
    printf ${3+-v} $3 "%.0f %.0f" \
        ${y:0:${#y}-6}.${y:${#y}-6} ${x:0:${#x}-6}.${x:${#x}-6} 
};

MLEN=000$((900*RAY))
printf -v MLEN "%.0f" ${MLEN:0:${#MLEN}-3}.${MLEN:${#MLEN}-3}
HLEN=000$((700*RAY))
printf -v HLEN "%.0f" ${HLEN:0:${#HLEN}-3}.${HLEN:${#HLEN}-3}

declare -A ticks
for ((i=1;i<=12;i++));do
    clksin $((5*(i%12))) $RAY tick
    ticks[$tick]=$i
done

while :;do
    [ "$NowM" ] || printf -v NowM "%(%M)T\n" -1
    clksin ${NowM#0} $MLEN NowM
    [ "$NowH" ] || printf -v NowH "%(%H)T\n" -1
    clksin $((5*(${NowH#0}%12))) $HLEN NowH

    [ "$2" ] || echo -en \\e[H; # ANSI sequence for top left of console
    for ((i=0;i<=2*RAY;i++));do
        x=$((RAY-i))
        sqrt $((RAY**2 - ${x#-}**2 )) y0
        printf -v y0 "%.0f" $y0
        for ((l=0;l<=2*RAY;l++));do
            y=$((RAY-l));
            sqrt $((RAY**2 - ${y#-}**2 )) x0
            printf -v x0 "%.0f" $x0
            if [ "${ticks["$i $l"]}" ] ;then
                printf "%-2s" ${ticks["$i $l"]}
            elif [ ${x#-} -eq $x0 ] || [ ${y#-} -eq $y0 ] ;then
                echo -n .\ 
            elif [ "$i $l" = "$NowM" ] ;then
                echo -en \\e[1mM\ \\e[0m
            elif [ "$i $l" = "$NowH" ] ;then
                echo -en \\e[1mH\ \\e[0m
            else
                echo -n \ \ 
            fi
        done
        echo -e \\e[K
    done
    echo -en \\e[J
    [ "$2" ] && break # Exit if at least Hour was specified
    printf -v SleepS "%(%S)T" -1
    read -t $((60-${SleepS#0})) foo
    unset NowH NowM
done

এটি এইভাবে চালানো যেতে পারে:

for time in 10:10 15:00 12:30 06:00 09:15 16:40 ;do
    echo - $time -{,}{,}{,}
    ./ascii-clock.sh 5 ${time//:/ }
    echo -{,,,,,}{,}
  done |
    sed 's/\o033\[\(.m\|[JK]\)//g;/-$/!s/$/|/;s/-$/+/' |
    column -c 80

এটি এমন কিছু উত্পাদন করবে:

+- 10:10 - - - - - - - + - 12:30 - - - - - - - + - 09:15 - - - - - - - +
|      . . 12. .       |       . . 12. .       |       . . 12. .       |
|    11          1     |     11    H     1     |     11          1     |
|  10              2   |   10              2   |   10              2   |
|.   H           M   . | .                   . | .                   . |
|.                   . | .                   . | .                   . |
|9                   3 | 9                   3 | 9 H               M 3 |
|.                   . | .                   . | .                   . |
|.                   . | .                   . | .                   . |
|  8               4   |   8               4   |   8               4   |
|    7           5     |     7     M     5     |     7           5     |
|      . . 6 . .       |       . . 6 . .       |       . . 6 . .       |
+- - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - +
+- 15:00 - - - - - - - + - 06:00 - - - - - - - + - 16:40 - - - - - - - +
|      . . 12. .       |       . . 12. .       |       . . 12. .       |
|    11    M     1     |     11    M     1     |     11          1     |
|  10              2   |   10              2   |   10              2   |
|.                   . | .                   . | .                   . |
|.                   . | .                   . | .                   . |
|9                 H 3 | 9                   3 | 9                   3 |
|.                   . | .                   . | .                   . |
|.                   . | .                   . | .   M           H   . |
|  8               4   |   8               4   |   8               4   |
|    7           5     |     7     H     5     |     7           5     |
|      . . 6 . .       |       . . 6 . .       |       . . 6 . .       |
+- - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - +

বা হিসাবে চালানো যেতে পারে:

xterm -geom 86x44 -bg black -fg grey -e ./ascii-clock.sh 21 &

xterm -geom 103x52 -fn nil2 -bg black -fg grey -e ./ascii-clock.sh 25 &

gnome-terminal --geometry 103x52 --zoom .5 -e "./ascii-clock.sh 25" &

বিকল্প: পূর্ণ পাথ অঙ্কন সহ:

#!/bin/bash
# Analog clock in Ascii-Art written in BASH V4.2 +=

RAY=${1:-12} NowH=$2 NowM=$3

sqrt() {
    local -a _xx=(600000 200000)
    local _x1=${_xx[$(($1&1))]} _x0=1
    while [ $_x0 -ne $_x1 ] ;do
        _x0=$_x1
        [ $_x0 -eq 0 ] && _x1=0000 || 
    printf -v _x1 "%u" $(( (${_x0}000 + ${1}00000000000/${_x0} )/2 ))
        printf -v _x1 "%.0f" ${_x1:0:${#_x1}-3}.${_x1:${#_x1}-3}
    done
    _x1=0000$_x1
    printf ${2+-v} $2 "%.3f" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}-4}
}
clksin() { # $1:moment [0-60], $2:path length, $3:variable name
    local _csin=(0 104528 207912 309017 406737 500000 587785 669131
    743145 809017 866025 913545 951057 978148 994522 1000000)
    local xsign=1 x=$1 ysign=-1 y=$1
    [ $x -gt 30 ] && xsign=-1 x=$((60-x)) 
    [ $x -gt 15 ] && x=$((30-x))
    x=00000$((RAY*1000000+xsign*${2:-10}*${_csin[$x]}))
    [ $y -gt 30 ] && y=$((60-y))
    [ $y -gt 15 ] && ysign=1 y=$((30-y))
    y=00000$((RAY*1000000+ysign*${2:-10}*${_csin[15-$y]}))
    printf ${3+-v} $3 "%.0f %.0f" \
    ${y:0:${#y}-6}.${y:${#y}-6} ${x:0:${#x}-6}.${x:${#x}-6} 
};

MLEN=000$((900*RAY))
printf -v MLEN "%.0f" ${MLEN:0:${#MLEN}-3}.${MLEN:${#MLEN}-3}
HLEN=000$((700*RAY))
printf -v HLEN "%.0f" ${HLEN:0:${#HLEN}-3}.${HLEN:${#HLEN}-3}

declare -A ticks
for ((i=1;i<=12;i++));do
    clksin $((5*(i%12))) $RAY tick
    ticks[$tick]=$i
done

while :;do
    [ "$NowM" ] || printf -v NowM "%(%M)T\n" -1
    unset MPath
    declare -A MPath
    for ((i=1;i<=MLEN;i++));do
    clksin ${NowM#0} $i tick
    MPath[$tick]=M
    done
    [ "$NowH" ] || printf -v NowH "%(%H)T\n" -1
    unset HPath
    declare -A HPath
    for ((i=1;i<=HLEN;i++));do
    clksin $((5*(${NowH#0}%12))) $i tick
    HPath[$tick]=H
    done

    [ "$2" ] || echo -en \\e[H; # ANSI sequence for top left of console
    for ((i=0;i<=2*RAY;i++));do
    x=$((RAY-i))
    sqrt $((RAY**2 - ${x#-}**2 )) y0
    printf -v y0 "%.0f" $y0
    for ((l=0;l<=2*RAY;l++));do
        y=$((RAY-l));
        sqrt $((RAY**2 - ${y#-}**2 )) x0
        printf -v x0 "%.0f" $x0
        if [ "${MPath["$i $l"]}" ] ;then
        echo -en \\e[1m${MPath["$i $l"]}\ \\e[0m
        elif [ "${HPath["$i $l"]}" ] ;then
        echo -en \\e[1m${HPath["$i $l"]}\ \\e[0m
        elif [ "${ticks["$i $l"]}" ] ;then
        printf "%-2s" ${ticks["$i $l"]}
        elif [ ${x#-} -eq $x0 ] || [ ${y#-} -eq $y0 ] ;then
        echo -n .\ 
        else
        echo -n \ \ 
        fi
    done
    echo -e \\e[K
    done
    echo -en \\e[J
    [ "$2" ] && break # Exit if at least Hour was specified
    printf -v SleepS "%(%S)T" -1
    read -t $((60-${SleepS#0})) foo
    unset NowH NowM
done

উত্পাদন করতে পারে:

+- 10:10 - - - - - - - + - 12:30 - - - - - - - + - 09:15 - - - - - - - +
|      . . 12. .       |       . . 12. .       |       . . 12. .       |
|    11          1     |     11    H     1     |     11          1     |
|  10              2   |   10      H       2   |   10              2   |
|.   H           M   . | .         H         . | .                   . |
|.   H H H   M M M   . | .         H         . | .                   . |
|9                   3 | 9                   3 | 9 H H H H   M M M M 3 |
|.                   . | .         M         . | .                   . |
|.                   . | .         M         . | .                   . |
|  8               4   |   8       M       4   |   8               4   |
|    7           5     |     7     M     5     |     7           5     |
|      . . 6 . .       |       . . 6 . .       |       . . 6 . .       |
+- - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - +
+- 15:00 - - - - - - - + - 06:00 - - - - - - - + - 16:40 - - - - - - - +
|      . . 12. .       |       . . 12. .       |       . . 12. .       |
|    11    M     1     |     11    M     1     |     11          1     |
|  10      M       2   |   10      M       2   |   10              2   |
|.         M         . | .         M         . | .                   . |
|.         M         . | .         M         . | .                   . |
|9           H H H H 3 | 9                   3 | 9                   3 |
|.                   . | .         H         . | .   M M M   H H H   . |
|.                   . | .         H         . | .   M           H   . |
|  8               4   |   8       H       4   |   8               4   |
|    7           5     |     7     H     5     |     7           5     |
|      . . 6 . .       |       . . 6 . .       |       . . 6 . .       |
+- - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - +

অথবা

                                . . . . 12. . . .                                 
                          . . .                   . . .                           
                      . .                               . .                       
                  . 11                                      1 .                   
                .                                               .                 
              .                                                   .               
            .                                                       .             
          .                                                           .           
        .                                                               .         
      .                                                                   .       
      10                                                                  2       
    .                                                                   M   .     
    .                                                             M M M     .     
  .             H                                               M             .   
  .               H H                                       M M               .   
  .                   H                                   M                   .   
.                       H H H                       M M M                       . 
.                             H                   M                             . 
.                               H H           M M                               . 
.                                   H       M                                   . 
9                                     H   M                                     3 
.                                                                               . 
.                                                                               . 
.                                                                               . 
.                                                                               . 
  .                                                                           .   
  .                                                                           .   
  .                                                                           .   
    .                                                                       .     
    .                                                                       .     
      8                                                                   4       
      .                                                                   .       
        .                                                               .         
          .                                                           .           
            .                                                       .             
              .                                                   .               
                .                                               .                 
                  . 7                                       5 .                   
                      . .                               . .                       
                          . . .                   . . .                           
                                . . . . 6 . . . .                                 

সেকেন্ডস টিক্স রেন্ডারিং এবং সহ শেষ সংস্করণ ন্যানোস্লিপ সিঙ্কের ।

এটি কেবল সাম্প্রতিক লিনাক্সে কাজ করে, কারণ /proc/timer_listপ্রতিটি রিফ্রেশের মধ্যে ঘুমানোর জন্য দ্বিতীয়টির ভগ্নাংশ গণনা করতে এটি ব্যবহার করে।

#!/bin/bash
# Analog clock in Ascii-Art written in BASH V4.2 +=

RAY=${1:-12} NowH=$2 NowM=$3

# Hires Sleep Until
# there is a need to store offset in a static var

mapfile  </proc/timer_list _timer_list
for ((_i=0;_i<${#_timer_list[@]};_i++));do
    [[ ${_timer_list[_i]} =~ ^now ]] && TIMER_LIST_SKIP=$_i
    [[ ${_timer_list[_i]} =~ offset:.*[1-9] ]] && \
        TIMER_LIST_OFFSET=${_timer_list[_i]//[a-z.: ]} && \
        break
done
unset _i _timer_list
readonly TIMER_LIST_OFFSET TIMER_LIST_SKIP

sleepUntilHires() {
    local slp tzoff now quiet=false nsnow nsslp
    local hms=(${1//:/ })
    mapfile -n 1 -s $TIMER_LIST_SKIP nsnow </proc/timer_list
    printf -v now '%(%s)T' -1
    printf -v tzoff '%(%z)T\n' $now
    nsnow=$((${nsnow//[a-z ]}+TIMER_LIST_OFFSET))
    nsslp=$((2000000000-10#${nsnow:${#nsnow}-9}))
    tzoff=$((0${tzoff:0:1}(3600*${tzoff:1:2}+60*${tzoff:3:2})))
    slp=$(( ( 86400 + ( now - now%86400 ) +
                10#$hms*3600+10#${hms[1]}*60+10#${hms[2]} -
                tzoff - now - 1
            ) % 86400)).${nsslp:1}
    read -t $slp foo
}

sqrt() {
    local -a _xx=(600000 200000)
    local _x1=${_xx[$(($1&1))]} _x0=1
    while [ $_x0 -ne $_x1 ] ;do
        _x0=$_x1
        [ $_x0 -eq 0 ] && _x1=0000 || 
    printf -v _x1 "%u" $(( (${_x0}000 + ${1}00000000000/${_x0} )/2 ))
        printf -v _x1 "%.0f" ${_x1:0:${#_x1}-3}.${_x1:${#_x1}-3}
    done
    _x1=0000$_x1
    printf ${2+-v} $2 "%.3f" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}-4}
}
clksin() { # $1:moment [0-60], $2:path length, $3:variable name
    local _csin=(0 104528 207912 309017 406737 500000 587785 669131
    743145 809017 866025 913545 951057 978148 994522 1000000)
    local xsign=1 x=$1 ysign=-1 y=$1
    [ $x -gt 30 ] && xsign=-1 x=$((60-x)) 
    [ $x -gt 15 ] && x=$((30-x))
    x=00000$((RAY*1000000+xsign*${2:-10}*${_csin[$x]}))
    [ $y -gt 30 ] && y=$((60-y))
    [ $y -gt 15 ] && ysign=1 y=$((30-y))
    y=00000$((RAY*1000000+ysign*${2:-10}*${_csin[15-$y]}))
    printf ${3+-v} $3 "%.0f %.0f" \
    ${y:0:${#y}-6}.${y:${#y}-6} ${x:0:${#x}-6}.${x:${#x}-6} 
};

SLEN=000$((870*RAY))
printf -v SLEN "%.0f" ${SLEN:0:${#SLEN}-3}.${SLEN:${#SLEN}-3}
MLEN=000$((780*RAY))
printf -v MLEN "%.0f" ${MLEN:0:${#MLEN}-3}.${MLEN:${#MLEN}-3}
HLEN=000$((650*RAY))
printf -v HLEN "%.0f" ${HLEN:0:${#HLEN}-3}.${HLEN:${#HLEN}-3}

declare -A ticks
for ((i=1;i<=12;i++));do
    clksin $((5*(i%12))) $RAY tick
    ticks[$tick]=$i
done

while :;do
    [ "$NowM" ] || printf -v NowM "%(%M)T\n" -1
    unset MPath
    declare -A MPath
    for ((i=1;i<=MLEN;i++));do
    clksin ${NowM#0} $i tick
    MPath[$tick]=M
    done
    [ "$NowH" ] || printf -v NowH "%(%H)T\n" -1
    unset HPath
    declare -A HPath
    for ((i=1;i<=HLEN;i++));do
    clksin $((5*(${NowH#0}%12))) $i tick
    HPath[$tick]=H
    done
    printf -v NowS "%(%S)T\n" -1
    clksin ${NowS#0} $SLEN STick

    [ "$2" ] || echo -en \\e[H; # ANSI sequence for top left of console
    for ((i=0;i<=2*RAY;i++));do
    x=$((RAY-i))
    sqrt $((RAY**2 - ${x#-}**2 )) y0
    printf -v y0 "%.0f" $y0
    for ((l=0;l<=2*RAY;l++));do
        y=$((RAY-l));
        sqrt $((RAY**2 - ${y#-}**2 )) x0
        printf -v x0 "%.0f" $x0
        if [ "$i $l" = "$STick" ] ;then
                echo -en \\e[1ms\ \\e[0m
        elif [ "${MPath["$i $l"]}" ] ;then
        echo -en \\e[1m${MPath["$i $l"]}\ \\e[0m
        elif [ "${HPath["$i $l"]}" ] ;then
        echo -en \\e[1m${HPath["$i $l"]}\ \\e[0m
        elif [ "${ticks["$i $l"]}" ] ;then
        printf "%-2s" ${ticks["$i $l"]}
        elif [ ${x#-} -eq $x0 ] || [ ${y#-} -eq $y0 ] ;then
        echo -n .\ 
        else
        echo -n \ \ 
        fi
    done
    echo -e \\e[K
    done
    echo -en \\e[J
    [ "$2" ] && break # Exit if at least Hour was specified
    printf -v SleepS "%(%s)T" -1
    printf -v SleepS "%(%T)T" $((1+SleepS))
    sleepUntilHires $SleepS
    unset NowH NowM
done

আরও আপত্তিজনক সংস্করণ (2702 বাইট):

@ মানাটওয়ার্কের অনুরোধ অনুসারে আরও একটি গল্ফ রয়েছে সংস্করণ রয়েছে।

এই সংস্করণটি বর্ণযুক্ত এবং কোণে ডিজিটাল সময় উপস্থিত রয়েছে।

#!/bin/bash
W=/proc;J=${1:-12} B=$2 A=$3 LANG=C R=$W/timer_list;if [ -f $R ];then Q=10
mapfile <$R e;for ((P=0;P<${#e[@]};P++));do ((Q+=${#e[P]}));[[ ${e[P]} =~ ^now
]]&&U=$Q;[[ ${e[P]} =~ offset:.*[1-9] ]]&&a=${e[P]//[a-z.: ]}&&break;done;c(){
local q p;read -N$U q <$R;q=${q%% nse*};q=$[${q##* }+a];p=$[2000000000-10#${q:
${#q}-9}];read -t .${p:1} M;};else c(){ local H;read -d\  H < $W/upti*;H=$[200
-10#${H#*.}];read -t .${H:1} M;};fi;u(){ local E=({6,2}00000) F=${E[$1&1]} G=1
while [ $G -ne $F ];do G=$F;[ $G -eq 0 ]&&F=0000||printf -v F "%u" $(((${G}000
+${1}00000000000/${G})/2));printf -v F "%.0f" ${F:0:${#F}-3}.${F:${#F}-3};done
F=0000$F;printf -v $2 "%.3f" ${F:0:${#F}-4}.${F:${#F}-4};};g(){ local t=($[7#0
] 104528 207912 309017 406737 500000 587785 669131 743145 809017 866025 913545
951057 978148 994522 1000000) j=1 x=$1 h=-1 y=$1;[ $x -gt 30 ]&&j=-1 x=$[60-x]
((x>15))&&x=$[30-x];x=00000$[J*1000000+j*${2:-10}*${t[$x]}];((y>30))&&y=$[60-y
];((y>15))&&h=1 y=$[30-y];y=00000$[J*1000000+h*${2:-10}*${t[15-y]}];printf -v\
$3 "%.0f %.0f" ${y:0:${#y}-6}.${y:${#y}-6} ${x:0:${#x}-6}.${x:${#x}-6};};v=000
v+=$((870 *J));printf -v v "%.0f" ${v:0:${#v}-3}.${v:${#v}-3};C=000$((780*J));
printf -v C "%.0f" ${C:0:${#C}-3}.${C:${#C}-3};D=000$[650*J];printf -v D %.f \
${D:0:${#D}-3}.${D:${#D}-3};declare -A m;for ((i=1;i<=12;i++));do g $[5*(i%12)
] $J w;m[$w]=$i;done;printf -v T "\e[1m%s\e[0m " . + \* o O;T=(${T});m["${J: \
} $J"]=${T} ;printf "\e[?25l\e[H\e[J";trap "printf '\e[?12l\e[?25h\e[$((2*J +3
))H\e[J';exit" 0 1 2 3 6 9 15; printf -v S "\\e[1;%dH%%(%%H)T\\e[%dH%%(%%M${Z:
})T\\e[%d;%dH%%(%%S)T" $[4*J] $[2*J+1] $[2*J+1] $[4*J];declare -A V;V["$[2 * J
] $[2*$J]"]="  ";while :;do [ "$A" ]||printf -v A "%(%M)T" -1;unset r;declare\
 -A r;for ((i=1;i<=C;i++));do g ${A#0} $i w;r[$w]=M;done;[ "$B" ]||printf -v \
B "%(%H)T" -1;unset s;declare -A s;for ((i=1;i<=D;i++));do g $((5*( ${B#0}%12)
)) $i w;s[$w]=H;done;printf -v z "%(%S)T" -1;g ${z#0} $v n;[ "$2" ]||echo -en\
 \\e[H;for ((i=0;i<=2*J;i++));do x=$[J-i];u $[J*J-${x#-}**2] N;printf -v N${Z:
} %.f $N;for ((l=0;l<=2*J;l++));do y=$[J-l];u $[J*J-${y#-}**2] O;printf -v O \
%.f $O;c="  ";if [ "$i $l" = "$n" ];then c=$'\e[36;1ms \e[m';elif [ "${r["${i:
} $l"]}" ] ;then c=$'\e[32;1m'${r["$i $l"]}$' \e[0m';elif [ "${s["$i $l"]}" ];
then c=$'\e[34;1m'${s["$i $l"]}$' \e[0m';elif [ "${m["$i $l"]}" ];then printf\
 -v c "%-2s" "${m["$i $l"]}";elif [ ${x#-} -eq $O ] || [ ${y#-} -eq $N ] ;then
c=.\ ;else c="  ";fi;[ "$c" != "${V["$i $l"]}" ]&& V["$i $l"]="$c" && printf \
"\e[%s;%sH%-2s" $((1+i)) $[1+l*2] "$c";done;done;[ "$2" ] &&break;printf "${Z:
}\e[H\e[7mS\e[0m";c;printf "\e[H $S" -1 -1 -1;m["$J $J"]=${T[$[10#$z%${#T[@]}]
]};unset B A;done

দ্রষ্টব্য: যাইহোক এটি ব্যবহার করবেন না!

এটি প্রোগ্রাম হিসাবে এবং যেমন বাশ কোনও প্রোগ্রামিং ভাষা নয়, এটি কিছু সময়ের জন্য ব্যবহার করা ভাল নয়।

7 অক্ষরের দৈর্ঘ্যের রশ্মির অঙ্কন সহ মাত্র 5 ঘন্টার মধ্যে মেমরি গ্রাহনের সামান্য ডেমো রয়েছে:

$ ascii-clock.sh 7

After     PMem   PCpu      Mem
    0'30"  0.0%  21.6%   12.98M
   10'30"  1.0%  20.9%   48.91M
 1h 0'30"  5.6%  20.8%  228.63M
 2h 0'31" 11.2%  20.8%  444.25M
 3h 0'32" 16.8%  20.8%  659.91M
 5h 0'00" 27.9%  20.8%   1.064G

এর মূল সুবিধাটি যখন আমার স্মৃতি দরকার তখন আমাকে কেবল ঘড়িটি মেরে ফেলতে হয়।

( নোটা: আমি এগুলি , পার্ল সংস্করণ এবং জন্য এসসিআই-ক্লকের একই সংস্করণটি একীভূত করেছি ;-)


@ মানাতকর্ম কেন? এটি অ্যানালগ, অবিচ্ছিন্নভাবে চালানো এবং 1 সেকেন্ডেরও কমের মধ্যে আঁকুন ... আমি কী ভুল পড়ি?
এফ। হাউরি

উফ। আমার ভুল. প্রথমে আমি এটি bash4.1 এ চেষ্টা করেছিলাম । 4.2 এ প্রকৃতপক্ষে অবিচ্ছিন্নভাবে চালিত হয় এবং কমান্ড লাইন পরামিতিগুলির প্রয়োজন হয় না।
manatwork

প্রয়োজনে কোনও আকারের সীমা নেই । এবং খাঁটি বাশে এটি করা একটি আসল চ্যালেঞ্জ! কাঁটাচামচ ছাড়াই এই সংক্ষিপ্তটি করা সহজ বলে মনে হচ্ছে না (এমনকি সম্ভব হলেও)।
এফ। হাউরি

ঠিক আছে, কোনও আকারের সীমা নেই এবং খাঁটি সাথে এটি সম্পাদন করা bashদুর্দান্ত দক্ষতার একটি প্রদর্শন। (/ আমি তার টুপিটি নিয়ে নিয়ে উপরের লিঙ্কটি ক্লিক করি) তবে কোড-গল্ফ চ্যালেঞ্জগুলির চেতনাতে সেই 2529 টি চরিত্রগুলি এখনও হ্রাস পেতে পারে : "কোড-গল্ফ সোর্স কোডের কয়েকটিতম বাইটে একটি নির্দিষ্ট সমস্যা সমাধানের জন্য একটি প্রতিযোগিতা। "
manatwork

@ মান্যাটওয়ার্ক এখন আরও গল্ফযুক্ত সংস্করণ রয়েছে, (সংক্ষিপ্ত নয়: 2529 বাইটস থেকে, এই সংস্করণটি এখন 2702 বাইট, তবে নতুন বৈশিষ্ট্য রয়েছে)
এফ হৌরি

6

পাইথন 2 - 207

import time as T
while 1:t=T.localtime();m=t.tm_min/5;l=[12]+range(1,12);l[m]='';l[t.tm_hour%12]='H';l[m]+='M';a='  %s\n';print(a+('%s'+a)*5+a)%tuple(str(l[x])for x in[0,11,1,10,2,9,3,8,4,7,5,6]);T.sleep(9)

এটি খুব কুরুচিপূর্ণ, তবে পাঠযোগ্য। প্রতি 9 সেকেন্ডে মুদ্রণ (আপনি যদি চান তবে 1 সেকেন্ডে পরিবর্তন করতে পারেন), প্রতি 5 মিনিটে আপডেট হয়। পাইথনে কোড গল্ফিংয়ের সাথে আমার খুব বেশি অভিজ্ঞতা নেই তাই আমি আশা করি এটি উন্নত হতে পারে।

উদাহরণ আউটপুট:

  12
11  1
10  2
9  M
8  4
7  H
  6

18
আপনার ঘড়িটি ডালি বলে মনে হচ্ছে। বলিহারি!
শ্মিদ্দী

3

পার্ল 5 এক্স 65 = 325 - 65 (20%) = 260 চর !!

দ্বিতীয় টিক সহ পরিষ্কার, বিজ্ঞপ্তিযুক্ত এবং প্রতি সেকেন্ডে আপডেট হয়।

perl -E '
$r=11;$p=atan2(1,1)/7.5;sub c{($A,$R,$C)=@_;$a[$r-$R*cos($A*$p)][
$r+$R*sin($A*$p)]=$C." "x($C!~/../)};while(::){@a=map{[map{"  "}(
0..$r*2)]}(0..$r*2);map{c$_*5,$r,$_}(1..12);@t=localtime;for$i(qw
|H:6:5:2 M:8:1:1 s:9:1:0 |){($S,$P,$F,$T)=split":",$i;map{c$F*$t[
$T],$_,$S}(do{$T?1:$P}/10*$r..$P/10*$r)};map{say@{$_}}@a;sleep 1}
'

24 লাইনের কনসোলটিতে দেখতে দুর্দান্ত (এটি 00:12:56 ):

                    12                        
          11                    1             
                s                             


  10                  H                 2     
                      H                       
                      H                       
                      H           M M         
                      H     M M M             
                      M M M                   
9                                           3 




  8                                     4     



          7                     5             

                      6                       

এবং এখানে একটি রঙিন, সুন্দর এবং স্মার্ট সংস্করণ রয়েছে:

#!                               /usr/bin/perl
                        use Time::HiRes qw|sleep time|
                     ;$h=11;$h=$ARGV[0]if$ARGV[0];$P=atan2
                 (1,1)/7.5;$V =4*$h; $v= 2* $h+ 1;@r=(0..2*$v)
              ;sub p{printf @_       }sub        b{ return"\e[1m"
            .pop."\e[0m"              };$              |=p"\e[?25".
           "l\e[H\e[" ."J"            ;$             SIG{ 'INT'}=sub
         {p"\e[?1"    ."2l"                        ."\e"     ."[?25h".
      "\e[%dH"        ."\e"                       ."[J"      ,$v+2;exit;
      };@z=map                                                  {[map{" "
     }@r] }(0                                                     ..2*$v);
    @Z=map{[@                                                  {$z[$_]}]}@r
   ;sub c{($A,$r ,$s                                       )=@_;$z[$h-$r*cos
  ($A*$P)    +.5 ][$h+$                                 r*sin($A*$P)+.5]=$s;}
  for$x(        0..$h) {$y=                         int(sqrt($h**2     -$x**2
 )+.5);$         z[$h-$x][$h-$                  y]=".";$z[$h+$x        ][$h-$y
 ]=".";             $z[$h-$x][$h+$           y]=".";$z[$h+$x            ][$h+$
y]=".";                $z[$h-$y][$h-$    x]=".";$z[$h+$y                ][$h-$x
]=".";                    $z[$h-$y][$h+$x]=".";$z[$h+                    $y][$h
+$x]="."};map{               c$_*5,$h,b$_}(1..12);                @R=map{[@{$z[
$_]}]}@r;while                (::){@t=localtime;                   p"\e[H\e[1;$
{V}H%0"                       ."2d\e[${v}H%02d\e"                        ."[${v
};${ V                         }H%02d",$t[2],$t[                         1],$t[
 0];@z=                         map{[     @{$R[                         $_]}]}(
 0..2*$                                                                 v);for
 $i('H:'                                                              .'65:5:'
  .'2:4',     ""                                               x1    .'M:78:'
   ."1:1" .":2",                                               "s:8". "7:1:"
    .'0:6'){($                                                  l,$p,$F,$u,$
     c)=split                                                    ":",$i;map
      {c$F*$t                                                     [$u],$_
       ,b("\e["                                                ."3${c}m$
        l")}(do{$u     ?1:$                         p} /     100*$h..$p
          /100*$h);}  $z[$            h][            $h]=  b((".","+"
            ,"*","o","O")             [$t             [0]%5]);for$x
              (@r){for$y(@r           ){$           Z[$x][$y]ne$z
                 [$x][$y]?p"\e[%d;%dH".$z  [ $x] [$y],$x+1,2*$
                    y+1:''};};@Z=map{[@{$z[$_]}]}@r;$n=1-$1
                        if time=~/(\..*)$/;p"\e[H\e[7m"
                               ."S\e[0m";sleep$n}

মূল সংস্করণটির সাথে এই সংস্করণটি এই অন্য উত্তরের সাথে দৃ strongly়ভাবে যুক্ত হয়েছে : আপনি এটিকে কিছুক্ষণ চুপ করে চালাতে পারতেন! সুতরাং আপনি সেখানে আপগ্রেড সংস্করণটি খুঁজে পেতে পারেন বা গিক্সের জন্য এই অসি-ক্লকটিতে ওয়েব পৃষ্ঠার ।

একটি প্রায় একই কাজ করার জন্য কম সংস্থান দরকার বলে একটি বিক্ষোভ হিসাবে

$ ascii-clock.pl 7

After     PMem   PCpu      Mem
    0' 0"  0.0%   0.0%    23.5M 
   10'30"  0.0%   0.0%    23.5M 
 1h 0' 0"  0.0%   0.0%    23.5M 
 2h 0' 0"  0.0%   0.0%    23.5M 

প্রায় একই বৈশিষ্ট্য জন্য:

  • রিফ্রেশ করার জন্য প্রতিটি সেকেন্ডের শুরুতে অপেক্ষা করুন
  • রঙ এবং গা bold় গুণাবলী দিয়ে আঁকুন
  • বিন্দু, ঘন্টা টিক, ঘন্টা এবং মিনিট পূর্ণ পথ এবং একটি সহ পূর্ণ বৃত্ত আঁকুন s দ্বিতীয় হ্যান্ডলারের জন্য বিন্দু ।
  • শীর্ষে ডানদিকে, বাম দিকে কয়েক মিনিট বাম এবং সেকেন্ডে ডিজিটাল ক্লক প্রম্প্টিং ঘন্টা আঁকুন
  • ঘুমানোরS সময় উপরের বাম দিকে প্রম্পট করুন ( সংস্করণের সাথে পার্থক্য দেখুন )

যোগ

  • আপগ্রেড করা সংস্করণ -aভগ্নাংশে ঘন্টা এবং মিনিটের পথ আঁকার জন্য আর্গুমেন্টকে অনুমোদন দেয় (১১ ঘন্টাে ১১ ঘন্টা 59 ঘন্টা সময় পথ প্রায় 12 ঘন্টা)।

অন্য পার্ল সংস্করণ যাক !!!

নিম্নলিখিত (সুন্দর) ছবি ব্যবহার:

পার্ল কোডের একটি দুর্দান্ত উপস্থাপনা

আপনি সহজভাবে তুলনায় পারে:

curl http://i.stack.imgur.com/xvbHP.png |
  perl -e 'use GD;GD::Image->trueColor(1);$i=GD::Image->newFromPng(
      STDIN);my($x,$y)=$i->getBounds();for my$k(0..$x-1){for my$l(0
      ..$y-1){$_.=pack"UUU",$i->rgb($i->getPixel($k,$l))};};eval'

ঠিক আছে, এর জন্য জিডি 2-পার্ল ইনস্টল থাকা দরকার। তবে আপনি ;-) curlদ্বারা প্রতিস্থাপন করতে পারেনwget -O -

(দ্রষ্টব্য: এই ছবিটি 1.5Kb কাছে আমি অন্য তৈরি করেছি। একই ছবি, কিন্তু 900 দৈর্ঘ্য বাইট আপনি এই ছবি ভাল হিসাবে একটি খুঁজে পেতে পারেন। একই সংস্করণ Geeks জন্য ASCII-ঘড়ি :-)


গত নমুনা, আমি (জোর সুপারিশ করছি /) প্রতিস্থাপন করতে সুপারিশ evalদ্বারা printঅজানা ডাউনলোড করা কোড চালানোর আগে ;-) অনুক্রমে
এফ Hauri

2

Tcl, 288

while 1 {scan [clock format [clock seconds] -format %k-%M] %d-%d h m
regsub -all \ +|. "oaosocowoeouooovoioxozom   r    n\n" \ {&} p
lset p [set h [expr $h%12*2]] h
lset p [set m [expr $m/5*2]] [expr $h-$m?"m":"x"]
puts [string map /\ $p {rr/nrzmrann xrrr snnimrrrcnn vrrr wnnromrenrru}]}

ঠিক আছে, এখানে কিছু ব্যাখ্যা:

  • while 1 {...} - ঠিক আছে, ব্যাখ্যাটি ভুলে যাও
  • regsub -all \ +|. "oaosocowoeouooovoioxozom r n\n" \ {&} pএর সাথে প্রতিস্থাপন +|.করে _{\0}এবং ফলাফল সংরক্ষণ করে ppপ্রকৃতপক্ষে একটি বিশৃঙ্খলাযুক্ত অভিধান যেখানে প্রথম কীটি অনুপস্থিত (বা কেবলমাত্র একটি বিজোড় সংখ্যক উপাদানগুলির একটি তালিকা)।
  • lset p [set h [expr $h%12*2]] h প্রতিস্থাপনের তালিকায় ঘন্টা নির্ধারণ করে
  • lset p [set m [expr $m/5*2]] [expr $h-$m?"m":"x"]মিনিট সেট করে। যদি ঘন্টা এবং মিনিট একই হয় তবে ব্যবহার করুনx পরিবর্তে করুন।
  • string map /\ $p {rr/nrzmrann xrrr snnimrrrcnn vrrr wnnromrenrru} /\ $p সমান "/ $p" , তাই আমি প্রথম কী ( /) যুক্ত করব। এর পরে আমি একটি কী এর প্রতিটি ঘটনাকে rr/nrzmrann xrrr snnimrrrcnn vrrr wnnromrenrruএর মান দিয়ে প্রতিস্থাপন করি ।

সাধারণ মানচিত্র হয়

/ o a o s o c o w o e o u o o o v o i o x o z o m {   } r {    } n {
}

(যেমন পড়ুন "প্রতিস্থাপন /সঙ্গে o, প্রতিস্থাপন aসঙ্গেo ... প্রতিস্থাপন mসঙ্গে ___স্পেস (যে হওয়া উচিত))

আমি একজন প্রতিস্থাপন oসঙ্গে hএবং সঙ্গে একটি অন্য m, m, rএবংn মাত্র আউটপুট স্ট্রিং shoren হয় (আমি তাদের এক সঙ্গে বিভিন্ন স্পেস প্রতিস্থাপিত এছাড়াও \nসঙ্গে n)। আমি প্রথম উপাদানটি পরে যুক্ত করি তাই আমি পরিবর্তিত সূচকটির জন্য h * 2 এর পরিবর্তে h * 2 + 1 ব্যবহার করতে পারি। (২ টি চর বাঁচায়)

কিছু নোট:

  • টিসিএল-এর একটি তালিকা স্বতঃস্ফূর্তটিকে ডিলিমিটার হিসাবে ব্যবহার করে, যদি কোনও উপাদানের মধ্যে স্পেস থাকে তবে আপনাকে এটিটি বন্ধ করে দিতে হবে {}। ঠিক আছে, এটি কিছুটা জটিল জটিল eg উদাহরণস্বরূপ আপনি একটি দিয়ে সাদা স্থান থেকে বাঁচতে পারেন \, তবে এই জাতীয় বিবরণ নথিভুক্ত অন্য কোথাও
  • টিসিএল এর একটি ডিক কেবলমাত্র একটি সংখ্যক উপাদানগুলির তালিকা: key1 value1 key2 value2
  • আপনি একটি তালিকাটিকে স্ট্রিং হিসাবে বা স্ট্রিংকে তালিকার হিসাবে বিবেচনা করতে পারেন। স্ট্রিংটি একটি বৈধ তালিকা হলে কাজ করবে। ফ্রি সিরিয়ালাইজেশন!

এটি যখন 14: 23 হয়, তখন এটি ভুলভাবে ঘন্টা পয়েন্টারটি 14:00 এর পরিবর্তে 13:00 এ প্রদর্শন করে! - টিউটোরিয়ালপয়েন্টিফট.কম
সার্জিওল

ঠিক আছে, টিসিএল টাইমজোনগুলি সম্পর্কে জানে। আপনার পরিবেশ সঠিকভাবে সেটআপ করুন। (টিউটোরিয়ালপয়েন্টগুলি ইউটিসি ব্যবহার করে বলে মনে হচ্ছে)
জোহানেস কুহান

ওহো দুঃখিত. হতে পারে আমি অন্য সময়ের সেটআপে আছি। এখানে এটি পর্তুগাল, আমরা GMT ব্যবহার করি এবং গ্রীষ্মে থাকার সময়টি +1 হয়। সুতরাং, আমার উপভোগ করুন।
সার্জিওল

2

জাভাস্ক্রিপ্ট 2169 - 434 = 1735

ঠিক আছে, এটি অনেক, তবে তারা ঠিক আছে এবং আগের পোস্টগুলিতে আমার পূর্বের রূপের মতোই কাজ করে ( ব্যাশ এবং পার্ল )।

আমার সংস্করণটির জন্য আমার অ্যাসিআই-ক্লকটিতে আপনি যেটি খুঁজে পেতে পারেন তার চেয়ে এই সংস্করণটি আরও অচল

var x='<div class="m">&nbsp;M</div>',v='<div class="s">&nbsp;s</div>',w='&nbsp;'
,r=10,q,w='&nbsp;',y='<div class="h">&nbsp;H</div>',f=new Object();function d(){
q=document.getElementById("asciiclock");var t=document.location.toString().match
(/[?]([0-9]+)/);if (t!=null) r=t[1]*1.0;a();b();}function m(e){r=e;a();}function
a(){f=[];for (var i=1;r>i;i++){var u=Math.round(Math.sqrt(Math.pow(r,2)-Math.pow
(r-i,2)));f[(2*r-i)+"x"+(r+u)]=w+".";f[(i)+"x"+(r+u)]=w+".";f[(2*r-i)+"x"+(r-u)]
=w+".";f[(i)+"x"+(r-u)]=w+".";f[(r+u)+"x"+(2*r-i)]=w+".";f[(r+u)+"x"+(i)]=w+".";
f[(r-u)+"x"+(2*r-i)]=w+".";f[(r-u)+"x"+(i)]=w+".";}for(var i=1;13>i;i++){f[Math.
round(r+r*Math.sin(Math.PI/6*i-Math.PI/2))+"x"+Math.round(r+r*Math.cos(Math.PI/6
*i-Math.PI/2))]='<div class="t">'+(i<10?w+i:i)+'</div>';}}function b(){var z='';
var s=new Date(), o=s.getMinutes()*1.0+1.0*s.getSeconds()/60,p=s.getHours()*1.0+
1.0*o/60,n=s.getSeconds()*1.0,k=s.getHours();if (k<10) k=w+k;var j=s.getMinutes(
);if (j<10) j=w+j;var h=s.getSeconds();if (h<10)h=w+h;var g=new Object();for(var
i=1;r*.78>=i;i++) {g[Math.round(r+i*Math.sin (Math.PI/30*o-Math.PI/2))+"x"+Math.
round(r+i*Math.cos(Math.PI/30*o-Math.PI/2))]=x;};for (var i=1;r*.62 >=i;i++) {g[
Math.round(r+i*Math.sin(Math.PI/6*p-Math.PI/2))+"x"+Math.round(r+i*Math.cos(Math
.PI/6*p-Math.PI/2))]=y;};g[Math.round(r+.87*r*Math.sin(Math.PI/30*n-Math.PI/2))+
"x"+Math.round(r+.87*r*Math.cos(Math.PI/30*n-Math.PI/2))]=v;for (var i=0;2*r>=i;
i++){for(var l=0;2*r>=l;l++){if((i==r)&&(l==i)){z+=w+'<div class="t">'+['.','+',
'*','o','O'][n%5]+'</div>';}else if(f[i+"x"+l]!=undefined){z+=f[i+"x"+l]}else if
(g[i+"x"+l]!=undefined){z+=g[i+"x"+l];}else if(l==2*r){if(i==0){z+=w+'<div clas'
+'s="t">'+k+'</div>';}else if(i==l){z+=w+'<div class="t">'+h+'</div>';}else{z+=w
+w;};}else if(l==0){if(i==2*r){z+='<div class="t">'+j+'</div>';}else if(i==0){z=
'<div class="r">S</div>'+w;}else{z+=w+w}}else{z+=w+w}};z+='<br />';};q.innerHTML
=z;window.setTimeout(b,1000-new Date().getMilliseconds());};function c(){window.
setTimeout(b,0);q.innerHTML=w+q.innerHTML.substring (22);q.setAttribute('style',
'display:none');q.setAttribute('style',null)};window.onload=d;
.asciiclock { margin: 3em 0px 0px 0px;padding: 2px 4px 2px 3px; font-size: .5em;
display:inline-block;font-family:mono,monospace,courier;background:rgba(0,0,0,.7
);color: #888;}.asciiclock div{ display:inline-block;font-weight:bold;}.h{color:
#46F;}.m{color:#0F0;}.s{color:#0FF;}.r{color:#000;background:#aaa;}.t{color:#aaa
;}pre{display:inline-block;}
<head><title>Ascii-clock</title><script type="text/javascript" src="ascii-clock.js"
></script><link rel="stylesheet" href="ascii-clock.css" type="text/css"><style
type="text/css">body{margin:0;padding:0;background:#000;}.asciiclock{margin:0}
</style></head><body><div id="asciiclock" class="asciiclock"></div></body>


1

পাইথন, 259 - 52 = 207

from time import*
from math import*
g=[[' ']*61 for _ in[0]*31]
while 1:
 t=localtime()
 for x in range(60):a=pi*x/30-pi/2;g[15+int(15*sin(a))][30+int(30*cos(a))]='m'if x==t.tm_min else'h'if x==t.tm_hour%12*5 else'-'if x%5 else'#'
 for r in g:print''.join(r)

নমুনা আউটপুট:

                              #                              
                     -  -  -     -  -  -                     
                  -                       -                  
             -  h                           #  -             
          -                                       -          
        -                                           -        

      m                                               -      
     #                                                 #     
   -                                                     -   

  -                                                       -  
 -                                                         - 

 -                                                         - 
#                                                           #
 -                                                         - 

 -                                                         - 
  -                                                       -  

   -                                                     -   
     #                                                 #     
      -                                               -      

        -                                           -        
          -                                       -          
             -  #                           #  -             
                  -                       -                  
                     -  -  -     -  -  -                     
                              #                              

1

রুবি: 230 228 টি অক্ষর - 46 = 182

M=Math
P=M::PI
x=->n,m=60,r,c{$><<"^[[%d;%dH%s\n"%[M.sin(n*P*2/m-P/2)*r+12,M.cos(n*P*2/m-P/2)*r*2+24,c]}
while t=Time.now
$><<"^[[2J"
1.upto(12){|i|x[i,12,11,i]}
x[t.hour*5+t.min/12,8,?H]
x[t.min,9,?M]
x[t.sec,10,?S]
sleep 0.1
end

(বিঃদ্রঃ: ^[ একটি একক অক্ষর))

নমুনা রান (21:19:33 এ):

                      12
           11                     1



   10                                     2




       H
 9                                           3


                                       M

   8                                      4



            7   S                 5

                       6

"আপনার ইচ্ছামতো কুৎসিত" সংস্করণ: 191 181 টি অক্ষর - 36 = 145

(ছোট আকার, নিম্ন নির্ভুলতা, কোনও সেকেন্ড, অভিন্ন ব্যাসার্ধ, ভয়াবহ ঝলকানি।

x=->n,m=60,c{$><<"^[[%d;%dH%s\n"%[Math.sin(n*6.3/m-1.6)*8+9,Math.cos(n*6.3/m-1.6)*8+9,c]}
while t=Time.now
$><<"^[[2J"
1.upto(12){|i|x[i,12,i]}
x[t.hour*5+t.min/12,?H]
x[t.min,?M]
end

নমুনা রান (21:19 এ):

       12  1
   11

              2
 10


H              3
9


               M
 8

            5
    7   6

ত্রিকোণমিতি-কম সংস্করণ: ১৩৫ 125 টি অক্ষর (কোনও বোনাস নেই)

(দ্বারা অনুপ্রাণিত জোহানেস কুন 'র Tcl সমাধান না নিশ্চিত কত, যেমন আমি এখনও তার কোড পাঠোদ্ধার না।।)

while t=Time.now
puts"^[[2J  k l a
j\tb
i\tc
h\td
  g f e".tr((t.min/5+96).chr,?M).tr(((t.hour-1)%12+97).chr,?H).tr("a-l",?*)
end

নমুনা রান (21:19 এ):

  * * *
*       *
H       M
*       *
  * * *

আমি আমার সমাধানে একটি ব্যাখ্যা যুক্ত করেছি। কিছু পরিষ্কার না হলে শুধু জিজ্ঞাসা করুন।
জোহানেস কুহন

আপনাকে ধন্যবাদ জোহনেসকুহান, আমি ইতিমধ্যে এটি পড়েছি। আমার কাছে রহস্যটি সিনট্যাক্স নয়, তবে সেই স্ট্রিং মানগুলির এনকোডিং।
manatwork

শেষেরটিতে আমি সিনট্যাক্স ত্রুটিগুলি পাচ্ছি।
টিমটেক

@ টিমটেক, এটি কি " tr': can't convert Fixnum into String (TypeError)”? Now that you mentioned the error I dug for a version 1.8.7 and received the above error of that. Works fine on 1.9.2 and 1.9.3. Seems that ? M versions পুরানো সংস্করণগুলিতে ফিক্সনাম হিসাবে ব্যাখ্যা করা হয়েছিল এবং কেবল পরে স্ট্রিংয়ে পরিবর্তন করা হয়েছিল।
manatwork

0

এইচটিএমএল এবং জেএস: 397 - 20% = 317.6 characters

আমার প্রথম পুনরাবৃত্তি আমি এতে খুব সন্তুষ্ট নই, তবে এটি কাজ করে এবং এটি সময়টি খুব স্পষ্টভাবে দেখায়।

<canvas id=c width=198 height=198></canvas><script>c=document.getElementById("c")
.getContext("2d");c.r=c.rotate;c.c=c.clearRect;c.translate(99,99);for(i=0;i<60;i++)
{c.fillRect(89,-1,i%5?3:9,5);c.r(p=Math.PI/30);}setInterval(function(){n=new Date();
h=n.getHours()*5*p;c.beginPath();c.arc(0,0,86,0,7);c.fill();c.r(m=n.getMinutes()*p);
c.c(-2,-3,4,-80);c.r(h-m);c.c(-2,-3,4,-50);c.r(-h);},5);</script>

1
সুন্দর, তবে একে আমরা একে আসি-আর্ট বলি না ।
manatwork

0

টিআই-বেসিক 84, 587 - 20% = 469.6

:Xmax/2→Xmax:Ymax/2→Ymax:-Xmax→Xmin:-Ymax→Ymin:Degree:15→H:20→M:18→S::Circle(0,0,30):For(X,1,12)::Text(28-int(cos(X*30)*25),46+int(sin(30*X)*25),X):End:{0,0,0}→LANG:While getKey=0::getTime→LTIME::If LTIME(3)≠LANG(3)/6:Line(0,0,sin(LANG(3))*S,cos(LANG(3))*S,0)::If LTIME(2)≠LANG(2)/6:Then:::Line(0,0,sin(LANG(2))*M,cos(LANG(2))*M,0):::Line(0,0,sin(LANG(1))*H,cos(LANG(1))*H,0)::End::"SET ANGS::LTIME(1)*30+LTIME(2)/2→LANG(1)::LTIME(2)*6→LANG(2)::LTIME(3)*6→LANG(3)::Line(0,0,sin(LANG(1))*H,cos(LANG(1))*H::Line(0,0,sin(LANG(2))*M,cos(LANG(2))*M::Line(0,0,sin(LANG(3))*S,cos(LANG(3))*S:End

এর আউটপুট খুব সুন্দর এবং বিস্তারিত।


0

সি, 554 বাইট, প্রতি সেকেন্ডে মোটামুটি একবার আপডেট।

#include <time.h>
#include <math.h>
int r=25,i,q,c,i,q,b[999];void v(float a,int f,int m){b[(r/2+(int)(sin(a)*f))*r+r/2+(int)(cos(a)*f)]=m;}void main(){float a,p=6.28,z=1.57,h,m,s;for(;;){time_t u=time(0);struct tm*l=localtime(&u);s=l->tm_sec;m=l->tm_min+s/60.;h=l->tm_hour+m/60.;system("@cls||clear");q=r*r;c=r/2;memset(b,32,q*4);for(i=0,a=p;a>0;a-=0.52,i++)v(a,c,i%3?46:i%6?124:45);v(0,0,79);v(p*s/60.-z,c-4,83);v(p*m/60.-z,c-5,77);v(p*h/12.-z,c-6,72);for(i=0;i<q;i++){c=b[i];putchar(c);if(i%r==r-1)putchar(10);}for(c=0;c<2000000;c++)hypot(3,.4);}}

ফলাফল:

           |           
      .          .     



 .                     
                S    . 

       H               


-          O          -



                M      
 .                     
                     . 



     .          .      
           |            

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