এই সময় একটি ঘড়ি চ্যালেঞ্জ জন্য!


25

আমি চাই আপনি আমাকে এমন একটি ঘড়ি তৈরি করুন যা এই ফর্ম্যাটে সময় প্রদর্শন করে:

18 ----------
19 --------------------------------------------------

এটি '18: 10 'প্রদর্শন করে। বর্তমান ঘন্টা এবং পরের ঘন্টাটি লাইনের সামনের দিকে প্রদর্শিত হবে, তার পরে একটি স্থান এবং কয়েকটি ড্যাশ থাকবে: প্রথম লাইনে এই ঘন্টাটি কেটে গেছে কয়েক মিনিট, এবং দ্বিতীয় লাইনে আরও কত মিনিট দেখায় এই ঘন্টা যেতে।

স্পষ্ট করা

  • ঘড়িটি সিস্টেমের সময় প্রদর্শন করা উচিত। যদি অন্য উত্স থেকে সময় আনা আরও সুবিধাজনক হয় তবে তাও ঠিক। এটি ইনপুট হিসাবে সরবরাহ করা যাবে না
  • এদিকে 18:00, শীর্ষ রেখাটি কেবলমাত্র 18(ট্রাসিং স্পেস অনুমোদিত তবে প্রয়োজনীয় নয়)
  • 18:59, নীচের লাইন হয়19 -
  • <10 ঘন্টা হয় হয় 0( 01 -----) বা ডান-প্রান্তিককরণ ( 1 -----) এর সাথে প্রাক-প্যাডযুক্ত । বাম-প্রান্তিক একক অঙ্কের অনুমতি নেই, ড্যাশগুলি সঠিক জায়গায় শুরু হলেও ( 1 -----অবৈধ)।
  • ঘড়ির 24 ঘন্টা-ফর্ম্যাটে ঘন্টাগুলি প্রদর্শন করা উচিত।
  • যদিও এটিকে 24 ঘন্টা ফর্ম্যাট বলা হয়, 24এটি আসলে নেই । 23 তম ঘন্টা সময়কালে, দ্বিতীয় লাইনটি শুরু হয় 00বা দিয়ে 0
  • ডিসপ্লেটি কমপক্ষে এক মিনিটে একবার আপডেট করা দরকার তবে এটি ঠিক 00সেকেন্ডে হয় না। যদি এটি আরও সুবিধাজনক হয় তবে আপনি আরও ঘন ঘন / একটানা আপডেট করতে পারেন তবে অবশ্যই অবশ্যই ফলাফলটি সুস্পষ্ট হতে হবে - পুরো স্ক্রিনে একটি স্মিয়ার নয়।

ইনপুট

কোনটিই নয়।

আউটপুট

  • উপরে বর্ণিত. উভয় লাইনে ঘড়িকে প্যাড করার জন্য স্পেস ফাঁকা রাখার জন্য উভয় লাইনেই অনুমতি দেওয়া হয়েছে, একটি ট্রিলিং নিউলাইনও অনুমোদিত।
  • পরের মিনিটটি প্রদর্শনের সময় স্ক্রিনটি সাফ করা দরকার: হয় ক্লিয়ার-স্ক্রিন কমান্ড দিয়ে অথবা 30 টিরও কম নিউলাইন যোগ না করে।

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


সংখ্যা এবং ড্যাশগুলির মধ্যে আমাদের দুটি স্থান থাকতে পারে?
অ্যাডম

6
"এক মিনিটে একবার আপডেট হয়েছে" - এটি আরও প্রায়শই আপডেট করা যায়?
শে

1
@ এসএমএলস হ্যাঁ, আপনি যতটা পছন্দ আপডেট করুন। আমি চশমাটি 'মিনিটে অন্তত একবার' এ পরিবর্তন করব।
স্টেইনবার্গ

1
@ ক্রিতিক্সিলিথোস এটি দুই-অঙ্কের ঘন্টা (9, 10 বা 23, 00) এর সাথে সারিবদ্ধতা ভাঙবে, তাই না, অনুমতি নেই।
স্টেইনবার্গ

1
23 পরে, পরের ঘন্টা 24 বা 0 হয়?
ক্রিটিকি লিথোস

উত্তর:


2

এমএটিএল , 41 বাইট

একটি ভুল লক্ষ্য করার জন্য @ কুন্ডরকে ধন্যবাদ, এখন সংশোধন করা হয়েছে

`XxFT"4&Z'@+24\OH&YAO'-'60@*5&Z'-|Y"hhD]T

অনলাইনে এমএটিএল এ চেষ্টা করুন ! তবে মনে রাখবেন যে প্রোগ্রামটি 30 সেকেন্ডের পরে মারা গেছে, সুতরাং আউটপুটটিতে কোনও পরিবর্তন ধরা শক্ত।

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

`           % Do...while
  Xx        %   Clear screen
  FT        %   Push [0 1]
  "         %   For each k in [0 1]
    4&Z'    %     Push current hour
    @+      %     Add k
    24\     %     Modulo 24. This transforms 24 into 0
    OH&YA   %     Convert to base-10 string with 2 digits
    O       %     Push 0. Concatenating with chars will convert this to char,
            %     and char(0) will be displayed as a space
    '-'     %     Push '-'
    60@*    %     Push 60*k
    5&Z'    %     Push current minute
    -|      %     Absolute difference. This gives current minute for k==0,
            %     or 60 minus that for k==1
    Y"      %     Repeat '-' that many times
    hh      %     Concatenate the top three elements into a string
    D      %      Display
  ]         %   End
  T         %   Push true
            % End (implicit). Since the top of the stack contains true, this
            % gives an infinite loop

আমি হতে পারি, তবে দ্বিতীয় পুনরাবৃত্তির সময় কেবল শীর্ষ রেখাটি মুদ্রিত হয় ...
স্টেইনবার্গ

@ সটেনবার্গ এটি আমার জন্য ঘন্টা এবং মিনিটের পরিবর্তে কয়েক মিনিট এবং সেকেন্ডের জন্য কাজ করে, তাই পরিবর্তনগুলি সহজেই দেখা যায়: matl.suever.net/…
লুইস মেন্ডো

1
হ্যাঁ, কাজ করে। - প্রকৃতপক্ষে, এটি আমার নিজের ঘড়ির 3 এবং 4 লাইন হিসাবে দারুণ হতে পারে।
স্টেইনবার্গ

@ স্ত্তেনবার্গ: আপনি এই উত্তরটি গ্রহণ করেছেন, তবে এটি বৈধ নয় - এটি ২৩ এর 24 ঘন্টা পরে 24 হিসাবে দেখায় I আমি বিশ্বাস করি যে সংক্ষিপ্ত সঠিক উত্তরটি মান কালি দ্বারা রুবি one
নিক মাতেও

@ কুন্ডার লক্ষ্য করার জন্য ধন্যবাদ। 3 বাইটের ব্যয়ে সংশোধন করা হয়েছে
লুইস মেন্ডো

11

টিআই-বেসিক, 94 বাইট

" 
Repeat 99<length(Ans
Ans+"-
End
Ans→Str1
Repeat 0
getTime
ClrDraw
Ans{Ans(1)≠24,1,1
Text(0,0,Ans(1),sub(Str1,1,1+Ans(2
Text(6,0,Ans(1)+1,sub(Str1,1,61-Ans(2
End

তুলনামূলকভাবে সোজা। এটি শুরুতে এক স্থান সহ একটি স্ট্রিং। ঘন্টা ডান সারিবদ্ধ হয়। এটি কেবলমাত্র টিআই -৮৪ + ক্যালকুলেটরগুলিতে কাজ করে যেহেতু টিআই -৩ 83 এর অভ্যন্তরীণ ঘড়ি নেই।

সম্পাদনা করুন: আমি শেষ লুপটি বন্ধ করিনি তা দেখার জন্য @ কুন্ডরকে ধন্যবাদ জানাই। এখনই স্থির (+২ বাইট)।

সম্পাদনা # 2: প্রথম ঘন্টা শূন্য হতে হবে, চব্বিশটি নয়। +14 বাইট ব্যয়ে সংশোধন করা হয়েছে।


প্রতিটি কমান্ড একটি বাইট হিসাবে গণনা?
Sygmei

@ সিগমেই বেশিরভাগ টোকেনগুলি একটি বাইট, হ্যাঁ। যাইহোক, যেমন টি টোকেন Str1, getTimeএবং sub(দুই প্রতিটি বাইট হয়। আপনি tibasicdev.wikidot.com/tokens
টিমটেক

আপনি একটি এমুলেটর একটি লিঙ্ক আছে ঘটবে না, আপনি কি?
স্টেইনবার্গ

আমি cemetech.net / প্রকল্পগুলি / জাস্টিফাইডের সুপারিশ করব তবে মনে রাখবেন যে এই এমুলেটরটির সাথে ইন্টারনেট থেকে কোনও রম ব্যবহার করা নৈতিকভাবে ভুল unless যদি না আপনি নিজেরাই সেই ধরণের ক্যালকুলেটারের মালিক হন।
টিমটেক

1
লিঙ্কটি ক্লিক করতে ভয় পাবেন না, কারণ এমুলেটরটি বৈধ এবং এটি কাজ করার আগে আপনাকে নিজের রম আপলোড করতে বলে। টিআই তাদের নিখরচায় উপলব্ধ থাকত তবে তারা আর নেই। আপনি যদি কোনও বন্ধুর কাছ থেকে কোনও টিআই -৪৪ খুঁজে পেতে পারেন তবে এটি সেরা বিকল্প be
টিমটেক

9

ব্যাচ, 197 বাইট

@echo off
set/ah=100+%time:~0,2%,m=1%time:~3,2%
cls
call:l
set/ah=(h-3)%%24+100,m=260-m
call:l
timeout/t>nul 60
%0
:l
set s=%h:~1% 
for /l %%i in (101,1,%m%)do call set s=%%s%%-
echo %s%

দ্রষ্টব্য: 10 তম লাইনে একটি পিছনের স্থান রয়েছে। আমার জন্য, %time%নেতৃস্থানীয় স্থানের সাথে ঘন্টাগুলি , তবে শীর্ষস্থানীয় শূন্যের সাথে কয়েক মিনিটের ফর্ম্যাট করে। আমি সিদ্ধান্ত নিয়েছি একটি শীর্ষস্থানীয় শূন্য একটি সহজ আউটপুট ফর্ম্যাট, যেহেতু এর জন্য আমাকে যা করতে হবে তা হল 100 ঘন্টা যোগ করা এবং প্রথম সংখ্যাটি সরিয়ে ফেলা। মিনিটগুলি অষ্টাল পার্স ত্রুটিগুলি হিসাবে জটিল হয় 08বা এর 09কারণ ঘটায়, তাই আমি 1কার্যকরভাবে 100 মিনিট যুক্ত করার উপসর্গ করি , এটি লুপটি যথাযথভাবে অফসেট করে এর জন্য সামঞ্জস্য করি, যা 100 কে বিয়োগের চেয়ে আরও কম বাইট orter


7

পাইথন 3.6, 110 114 112 বাইট

from time import*
while[sleep(9)]:h,m=localtime()[3:5];print('\n'*50+'%2d '%h+'-'*m+f'\n{-~h%24:2} '+'-'*(60-m))

এটি একটি বাইট ( f'\n{h+1:2} 'বনাম '\n%2d '%(h+1)) সংরক্ষণ করতে নতুন এফ স্ট্রিং ফর্ম্যাটিং ব্যবহার করে আপনি 8 বাইট সংরক্ষণ করতে পরিবর্তন [sleep(9)]করতে 1পারেন তবে এটি কেবল স্ক্রিনটিকে স্প্যাম করে।

এক বাইট পরিবর্তন করে সংরক্ষণ করা while 1:...;sleep 60হয়েছে while[sleep(60)]:..., টুকুকএক্সকে ধন্যবাদ।

ওপি যেমন মন্তব্য করেছে তেমনই আমাকে পরের ঘন্টাটি ২৪ এর পরিবর্তে ২0 এর পরিবর্তে 0 হওয়ার জন্য পরের ঘন্টাটি পেতে আরও 5 বাইট ব্যবহার করতে হয়েছিল। :-(

60 এর পরিবর্তে 9 সেকেন্ড ঘুমিয়ে একটি বাইট উদ্ধার করে।

সংক্ষিপ্ত করতে বিট-ফিডলিং ব্যবহার করে দুটি বাইট সংরক্ষণ করা হয়েছে (h+1)%24, মূল্য কালিটির রুবির উত্তর থেকে ধার করা ।


আপনি দয়া করে ব্যাখ্যা করতে পারেন আপনি কেন এই শর্তের চারপাশে বর্গাকার বন্ধনী রেখেছেন? দু'পাশের 2 টির বিপরীতে, কেবল কখন এবং ঘুমের মধ্যে স্থান হবে না? সম্পাদনা: কিছু মনে করবেন না, এটিকে সত্যবাদী করা উচিত। যথেষ্ট ফর্সা।
শেডো

1
@ শ্যাডো: sleepরিটার্ন None, যা মিথ্যা।
নিক মাতেও

@ ToivoSäwén: sleepরয়েছেন timeতাই আমদানি * ভাল, মডিউল।
নিক মাতেও

5

রুবি, 98 95 91 বাইট

প্রতি 5 সেকেন্ডে আপডেট। শুধুমাত্র ইউনিক্স-স্টাইলের টার্মিনালগুলিতে কাজ করে।

loop{t=Time.now;puts`clear`+"%02d %s
%02d "%[h=t.hour,?-*m=t.min,-~h%24]+?-*(60-m);sleep 5}

উইন্ডোজ কমান্ড প্রম্পট সংস্করণ, 95 92 বাইট:

loop{t=Time.now;puts"\e[H\e[2J%02d %s
%02d "%[h=t.hour,?-*m=t.min,-~h%24]+?-*(60-m);sleep 5}

আপনি কি সিস্টেমের পরিবর্তে ব্যাকটিক ব্যবহার করতে পারেন? `cls`বনামsystem'cls'
IMP1

মনে হয় না তবে আপনি ব্যবহার করতে পারেন h=t.hourএবং তারপরে hদ্বিতীয়টির পরিবর্তে ব্যবহার করতে পারেন t.hourযা 3 বাইট সংরক্ষণ করে।
আইএমপি 1

@ আইএমপি 1 প্রকৃতপক্ষে, ব্যাকটিকগুলি কাজ করে না cls। আপনার অন্যান্য পরামর্শের জন্য ধন্যবাদ, যদিও!
মান কালি

@ আইএমপি 1 এটি হিসাবে দেখা যাচ্ছে, puts`clear`আপনি যদি ইউনিক্স টার্মিনাল ব্যবহার করেন তবে যাওয়ার উপায়। এটি কেবল উইন্ডোজ কমান্ড প্রম্পটের সাথে কাজ করে না cls
মান কালি

উইন্ডোগুলির জন্য, আপনি puts"\e[H\e[2J"কনসোলটি সাফ করতে পারেন , যা আমি মনে করি চারটি বাইট মুণ্ডন করে। এটি আপনার প্রথম লাইনটি পড়তে পারেloop{t=Time.now;puts"\e[H\e[2J%02d %s
IMP1

4

পার্ল 6 , 113 বাইট

loop {$_=DateTime.now;.put for |('' xx 30),|([\+](.hour,1)».fmt('%2s')Z('-' Xx[\-](.minute,60)».abs));sleep 60}

এক দ্বিতীয় সময়সীমা দিয়ে একবার চেষ্টা করে দেখুন

অথবা একটি পরিবর্তিত সংস্করণ চেষ্টা করুন যা বেশ কয়েক ঘন্টা চালানোর ফলাফলকে ছাড়িয়ে যায়।

সম্প্রসারিত:

loop {                  # keep repeating forever

  $_ = DateTime.now;    # assign an object representing the current time

    .put                # print with trailing newline
                        # ( adds a space between numbers and dashes )

  for                   # for each of the following

    |(                  # make it a slip so that it is all part of one list

      '' xx 30          # 30 empty strings (30 empty lines)
    ),

    |(

        [\+](           # triangle produce
          .hour,        # the hour
          1             # the hour plus one

        )».fmt( '%2s' ) # both formatted to two element string ( space padded )

      Z                 # zipped with

        (
            '-'         # a dash

          Xx            # cross (X) using string repeat (x) operator

            [\-](       # triangle produce
              .minute,  # the minute
              60        # the minute minus 60

            )».abs      # absolute value of both
        )
    );

  sleep 60              # wait until the next minute
}

'ত্রিভুজ উত্পাদন' কোন অপারেটর সমর্থন করে? ইন [\+]এটা যোগ করা হয়েছে এবং এর মধ্যে [\-]এটা বিয়োগ বলে মনে হয়। এটি কি গুণ এবং এর সাথে কাজ করে?
Yytsi

@ টুকুএক্সএক্স এটি প্রায় সমস্ত ইনফিক্স অপারেটরদের সাথে কাজ করা উচিত। এটি মূলত [+] LISTযা হ্রাস পাচ্ছে একইভাবে এটি বাদে এটি আপনাকে মধ্যবর্তী মান দেয়। উত্পাদনের
ব্র্যাড গিলবার্ট বি 2 গিল 20

4

কিউবাসিক, 120 127 121 বাইট

এটি খুব বেশি দিন চালাবেন না বা আপনার ল্যাপটপে আগুন লাগবে। এখন 99.several9s আরও% সিপিইউ-দক্ষ।

CLS
m=TIMER\60
h=m\60
m=m MOD 60
FOR i=1TO 2
?USING"## ";h MOD 24;
FOR j=1TO m
?"-";
NEXT
?
h=h+1
m=60-m
NEXT
SLEEP 1
RUN

অবহেলিত এবং ব্যাখ্যা

DO
    CLS
    totalMinutes = TIMER \ 60
    hour = totalMinutes \ 60
    minute = totalMinutes MOD 60

    FOR row = 1 TO 2
        PRINT USING "## "; hour MOD 24;
        FOR j = 1 TO minute
            PRINT "-";
        NEXT j
        PRINT

        hour = hour + 1
        minute = 60 - minute
    NEXT row

    SLEEP 1
LOOP

আমরা স্ক্রিনটি সাফ করেই শুরু করি, তারপরে বর্তমান সময় এবং মিনিটগুলি পাই TIMERযা মধ্যরাত থেকে সেকেন্ডের সংখ্যাটি দেয়।

এই প্রথম আমি চেষ্টা করেছি PRINT USING, তাই আমি এটা আবিষ্কার করে আনন্দিত হয়েছি যে এটি সাধারণ কিউবাসিক স্ফূরে ভুগছে না যে ইতিবাচক সংখ্যাগুলি একটি শীর্ষস্থানীয় স্থানের সাথে মুদ্রিত হয়। ##বিন্যাস নির্দিষ্টকরণকারকটি নিশ্চিত করে যে একক-অঙ্কের সংখ্যাগুলি ডান-প্রান্তিককরণ এবং প্রয়োজনীয়ভাবে একটি স্থানের সাথে প্যাড করা আছে। আমাদের হাইফেনগুলির জন্য একটি লুপ ব্যবহার করতে হবে, দুর্ভাগ্যক্রমে, যেহেতু কিউবাসিকের স্ট্রিং পুনরাবৃত্তি ফাংশন নেই। (আমি যদি ভুল করে থাকি তবে দয়া করে আমাকে জানান!)

সমস্ত PRINTবিবৃতি ;নিউলাইন দমন করতে শেষ হয় ; হাইফেন পরে, আমাদের একটি নতুন লাইন প্রয়োজন; সুতরাং, ?অভ্যন্তরীণ FORলুপ পরে নির্জনতা।

SLEEP 1এখন প্রয়োজন। এটি ছাড়াই, স্ক্রিনটি মুদ্রণের পরে এত তাড়াতাড়ি সাফ হয়ে যায় যে এটি কেবল একটি ঝাঁকুনির বিশৃঙ্খলা। (আমি প্রথমটির LOCATE 1পরিবর্তে CLSসেই কারণে ব্যবহার করেছি, যতক্ষণ না বুঝতে পারলাম যে যাই হোক না কেন এর CLSসাথে আরও SLEEPসংক্ষিপ্ত RUN


দিনের শেষ ঘন্টাটি কীভাবে এটি পরিচালনা করে? শীর্ষ লাইন 23 টি পড়ছে, তবে কি নীচের লাইনের ঘন্টা?
স্টেইনবার্গ

আমি নোট 7 ব্যবহার করছি এবং আমার স্ট্যাটাস বারের ঘড়ির জায়গায় অদূর ভবিষ্যতের জন্য এই প্রোগ্রামটি চালানোর কথা ভাবছি। এটা কি ভাল ধারণা?
21:39-

@ সটেনবার্গ ওফস, ফিক্সড আপনার পক্ষে প্রশ্নে সেই প্রান্তের বিষয়টি উল্লেখ করা সহায়ক হবে।
DLosc

@DLosc নাহ, আমি কেবল মজা করছি :))। তবে হ্যাঁ, স্মার্ট !!
পেঁচারচুলি

1
@ সটেনবার্গ তিনি এইচ এমডি 24 প্রিন্ট করেন, যদি প্রাথমিকভাবে এইচ = 23 হয় তবে পরবর্তী লুপটি তার 24 টি হয় এবং 0 তে পরিবর্তিত হয় তবে আমি আগ্রহী যদি এটি কাজ করে তবে আমি আগ্রহী। সিএলএস প্রথম লাইনটি সাফ করে তাই পর্দায় দুটোই কখনই মুদ্রিত লাইন থাকে না, তাই না?
জেনস

4

জাভা 8, 313 300 299 বাইট

import java.time.*;()->{for(int c=0,h=LocalDateTime.now().getHour(),m=LocalDateTime.now().getMinute(),i;;)if(c>30){c=0;String l="",u,d;for(i=0;i++<60;)l+="-";u=l.substring(0,m);d=l.substring(m);System.out.println((h<10?"0":"")+h+" "+u+"\n"+(h<9?"0":"")+(h+1)+" "+d);}else{c++;System.out.println();}}

এটি কেবলমাত্র লুপের প্রতি 30 টি পুনরাবৃত্তি আপডেট করে। অন্যান্য 29 টি পুনরাবৃত্তি কেবল নতুন লাইনগুলি মুদ্রণ করে।

আপডেট করা হয়েছে

সংরক্ষিত 13 কেভিন Cruijssen সাহায্য কারণে 14 বাইট! ধন্যবাদ!


হাই, পিপিসিজিতে আপনাকে স্বাগতম! প্রথমত, কেবলমাত্র প্রোগ্রাম / ফাংশনগুলির জন্য অনুমোদিত এবং আপনার বর্তমান কোডটি একটি স্নিপেট। আপনাকে এটিকে একটি পদ্ধতির সাথে ঘিরে ফেলতে হবে (যেমন void f(){...}এবং এটি প্রয়োজনীয় আমদানিগুলি যুক্ত করতে হবে (আপনার ক্ষেত্রে import java.time.*;) এটি বলা হচ্ছে, আপনার কোডটি একাধিক স্থানে গল্ফ করে এটি 311 বাইটে নামিয়ে আনা যেতে পারে (এমনকি যুক্ত পদ্ধতি সহ) - ঘোষণা এবং আমদানি)। (যেহেতু এই মন্তব্যের জন্য এটি অনেক দীর্ঘ, আমি এটি পরবর্তী মন্তব্যে
রেখেছি

import java.time.*;void f(){for(int c=0,h=LocalDateTime.now().getHour(),m=LocalDateTime.now().getMinute(),i;;)if(c>99){c=0;String l="",u,d;for(i=0;i++<61;)l+="-";u=l.substring(0,m);d=l.substring(m);System.out.println((h<10?"0":"")+h+" "+u+"\n"+(h<9?"0":"")+(h+1)+" "+d);}else{c++;System.out.println();}}( 303 বাইট ) আমি পড়া সুপারিশ জাভা golfing জন্য টিপস এবং টিপস <সমস্ত ভাষা> এ golfing জন্য । উপভোগকর তোমার থাকা.
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি আমার উত্তরটি আপডেট করেছি এবং ল্যাম্বদা স্বরলিপি ব্যবহার করে আরও 3 টি বাইট সংরক্ষণ করতে সক্ষম হয়েছি। এছাড়াও আমি কয়েক টুকরা কোড আপনার দ্বারা প্রদত্ত পাশাপাশি উল্লেখ (যেমন পূরণের বদলে, for(i=0;i++<60পরিবর্তে 61 এবং (h<10?এর 9. ধন্যবাদ পরিবর্তে আমাকে পদ্ধতি ঘোষণা এবং কিছু golfing টিপস সম্পর্কে পরিচায়ক জন্য!
CraigR8806

আহ, 60০ এর পরিবর্তে indeed১ আসলে আমার ভুল ছিল। আমি ভেবেছিলাম এটির for(i=0;++i<61পরিবর্তে আমি এটি লিখেছিলাম for(i=0;i++<61(এই দ্বিতীয় ক্ষেত্রে এটি সত্যই 60 হওয়া উচিত, এবং এটি বাইটের সমান পরিমাণ হলেও এটি সম্ভবত আরও স্পষ্ট / পাঠযোগ্য)। h<9আমার কোডে যদিও, সঠিক। আপনার h+1<10আগে ছিল এবং আমি h<9উভয় পক্ষের 1 মুছে ফেলার মাধ্যমে এটিকে সহজভাবে পরিবর্তন করেছি । :)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন হা আমি সেটিকে পেলাম না! h<9। আমি আরও 1 টি বাইট সংরক্ষণ করার জন্য এটি সম্পাদনা করব। আবার ধন্যবাদ!
ক্রেগআর 8806

4

সি, 176 162 161 160 156 বাইট

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

main(){int*localtime(),b[9],*t;memset(b,45,60);for(;;)time(&t),t=localtime(&t),usleep(printf("\e[2J%.2d %.*s\n%.2d %.*s\n",t[2],t[1],b,t[2]+1,60-t[1],b));}

Ungolfed:

#import<time.h>
main()
{
 int *t,b[60];
 memset(b,45,60);
 for(;;) {
  time(&t);
  t=localtime(&t);
  usleep(printf("\e[2J%.2d %.*s\n%.2d %.*s\n",t[2],t[1],b,t[2]+1,60-t[1],b));
 }
}

3

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

প্রতি সেকেন্ডে আপডেট

setInterval(c=>{c.clear(d=new Date,m=d.getMinutes(),h=d.getHours(),H=_=>`0${h++}`.slice(-2)),c.log(H()+` ${'-'.repeat(m)}
${H()} `+'-'.repeat(60-m))},1e3,console)


আপনি কোডটি পুনর্গঠন করে বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন যাতে এটি কেবলমাত্র একটি বিবৃতি ( যুক্তির console.clear()ভিতরে কল করা সম্ভব console.log) এবং যতটা সম্ভব অব্যবহৃত বন্ধনীগুলিতে বরাদ্দ করা যায়। 154B জন্য সংস্করণ: setInterval(c=>c.log(H(h,c.clear(d=new Date))+` ${'-'.repeat(m)} ${H(h+1)} `+'-'.repeat(60-m)),1e3,console,m=d.getMinutes(h=d.getHours(H=$=>$<9?'0'+$:$)))
লুক

আপনি একক ফাংশনে ঘন্টা এবং মিনিট রেখে একগুচ্ছ বাইট সংরক্ষণ করতে পারেন m=>`0${h++} \.slice(-3)+'-'.repeat(m)
নীল

3

পাইথন 2, 131 129 127 বাইট

from time import*
while[sleep(9)]:exec(strftime("a='%H';b=int('%M')"));print "\n"*30+a+" "+"-"*b+"\n"+`int(a)+1`+" "+"-"*(60-b)

@ টুকুএক্সএক্সকে একটি বাইট ধন্যবাদ সংরক্ষণ করেছে


2
আপনি সম্পর্কে newline এবং স্থান পর প্রয়োজন হবে নাwhile 1:
গমের উইজার্ড

আমি আপনার কোড @ 19: 55 শুরু করেছি। 20:01 এ, আমি দেখছি 19 - \n 20 -----------------------------------------------------------। ঘন্টা আপডেট হচ্ছে না ...
স্টেইনবার্গ

@ সটেনবার্গ আমি নিজে নিজে ঘড়িটি সেট করে চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করে।
ovs

@ovs ক্লক চ্যালেঞ্জ মজাদার নয় :-)। যাই হোক, সম্ভবত তারপর repl.it সঙ্গে কিছু ...
steenbergh

হেড-ডেস্ক Repl.it সার্ভারটি আমার স্থানীয় সময় থেকে এক ঘন্টা পিছনে ... এবং এটি কনসোলের একেবারে শীর্ষেও তাই বলে। আমি নিজেকে দেখব, ধন্যবাদ ...
স্টেইনবার্গ

3

সি 251 267 251 বাইট

 #include<time.h>f(){time_t t;struct tm *t1;h,m,i;while(1){time(&t);t1=localtime(&t);h=t1->tm_hour;m=t1->tm_min;printf("%d ",h);for(i=1;i<=m;i++)printf("-");puts("");printf("%d ",h+1);for(i=0;i<=59-m;i++)printf("-");puts("");sleep(1);system("clear");}}

উদার সংস্করণ

#include<time.h>
void f()
{
 time_t t;
 struct tm *t1;
 int h,m,i;

 while(1)
 {
  time(&t);     
  t1=localtime(&t);
  h=t1->tm_hour;
  m=t1->tm_min;

  printf("%d ",h);
  for(i=1;i<=m;i++)
   printf("-");

  puts("");
  printf("%d ",h+1);

  for(i=0;i<=59-m;i++)
   printf("-");

  puts("");    

  sleep(1);
  system("clear");    
 }
}

কাজ শেষ! অবশ্যই কোনওভাবে সংক্ষিপ্ত করা যেতে পারে। ধরুন unistd.hফাইলটি অন্তর্ভুক্ত রয়েছে।

@ নীল তথ্যের জন্য ধন্যবাদ।

@ শেঠ, 8 বাইট সংরক্ষণ করার জন্য ধন্যবাদ।


আইআইআরসি আপনাকে আপনার বাইট গণনায় কোড সংকলনের জন্য প্রয়োজনীয় সমস্ত কিছু অন্তর্ভুক্ত করতে হবে (এই ক্ষেত্রে, সংজ্ঞা time_tএবং struct tm) te
নীল

পরিবর্তে printf("\n");আপনি ব্যবহার করতে পারেনputs("");
শেঠ

3

প্রথমবার গল্ফিং ...

পাওয়ারশেল, 116 বাইট (ছিল 122)

while($d=date){$f="{0:D2}";$h=$d.Hour;$m=$d.Minute;cls;"$($f-f$h)$("-"*$m)`n$($f-f(++$h%24))$("-"*(60-$m))";Sleep 9}

সম্পাদনা করুন: @ অ্যাডমবর্কবার্কের পরামর্শ থেকে, গেট-ডেটকে তারিখে পরিবর্তন করা হয়েছে এবং ক্লাসে ক্লিয়ার করুন, 6 বাইট সংরক্ষণের জন্য।


PPCG স্বাগতম, ভাল উত্তর
জর্জ

পিপিসিজিতে আপনাকে স্বাগতম! বেশ কয়েকটি সহজ গল্ফ - আপনি এর clsপরিবর্তে clearএবং (যতক্ষণ আপনি উইন্ডোতে dateরয়েছেন ) এর পরিবর্তে ব্যবহার করতে পারেন get-date। আমি নিশ্চিত যে ফর্ম্যাটিংয়ের আউটপুট দেওয়ার আরও সহজ উপায় আছে - আমি এটি নিয়ে খেলছি এবং আমি যদি কিছু নিয়ে আসি তবে আপনাকে জানাব।
অ্যাডমবর্কবার্ক

খুশী হলাম। এটি চেষ্টা করুন: 108 বাইট while($d=date){cls;"{0,2} {2}``n{1,2} {3}"-f($h=$d.Hour),(++$h%24),('-'*($m=$d.Minute)),('-'*(60-$m));Sleep 9}। পরিবর্তে আপনার সম্পাদকটিতে এলএফ লাইন বিরতি ব্যবহার করুন 21 `
n`

3

পিএইচপি, 104 105 বাইট

<? for(;;sleep(6))printf("%'
99s%2d %'-".($m=date(i))."s
%2d %'-".(60-$m).s,"",$h=date(H),"",++$h%24,"");

printfএর কাস্টম প্যাডিং চরিত্রগুলির জন্য শোকেস :
"%'-Ns"= বাম প্যাড স্ট্রিং সহ- থেকে Nঅক্ষর।

স্ক্রিনটি সাফ করার পরিবর্তে 99 টি নতুন লাইন (প্রতি 6 সেকেন্ড) মুদ্রণ করবে।

প্রথম নিউলাইন অবশ্যই একটি একক অক্ষর হতে হবে। সুতরাং, উইন্ডোজে এটি অবশ্যই প্রতিস্থাপন করা উচিত \n


2

গেমমেকার ল্যাঙ্গুয়েজ, 134 বাইট

s=" "while 1{s+="-"a=current_hour b=current_minute draw_text(0,0,string(a)+string_copy(s,1,b+1)+"#"+string(a+1)+string_copy(s,0,61-b)}

সেটিংসে, আপনাকে অবশ্যই এটি কাজ করার জন্য অ-মারাত্মক ত্রুটি উপেক্ষা করতে হবে। এছাড়াও, জিএমএলে, বেশিরভাগ ভাষায় #সমান \n


2

পার্ল 6 , 104 বাইট

DateTime.now.&{"\ec{.hour.fmt: '%2s'} {'-'x.minute}\n{(.hour+1).fmt: '%2s'} {'-'x 60-.minute}"}.say xx*

একটি এএনএসআই সামঞ্জস্যপূর্ণ টার্মিনালটিতে চালানো দরকার যাতে পুনরায় সেট করার জন্য নিয়ন্ত্রণ অনুক্রমটি কাজ করে।

খুব বেসিক (কারণ আরো চেষ্টা করে দেখার চেষ্টা করা আরও দীর্ঘায়িত হয়েছে):

  • DateTime.now.&{" "}.say xx*: বর্তমান সময়টিকে স্ট্রিংয়ে রূপান্তর করুন (নীচে দেখুন) এবং এটি বলুন এবং সেই সমস্ত অসীম সংখ্যাকে পুনরাবৃত্তি করুন। স্ট্রিংটি এভাবে নির্মিত হয়েছে:
    • \ec: <ESC>cটার্মিনালটি পুনরায় সেট করার জন্য এএনএসআই নিয়ন্ত্রণ কোড , যা স্ক্রিনটি সাফ করে।
    • {.hour.fmt: '%2s'}: ঘন্টা, 2 কলামে ডান সারিবদ্ধ
    • : স্থান
    • {'-'x.minute}: মিনিট বার ড্যাশ বার বার
    • \n: নতুন লাইন
    • {(.hour+1).fmt: '%2s'}: পরের ঘন্টা, 2 কলামে ডান সারিবদ্ধ
    • : স্থান
    • {'-'x 60-.minute}: ড্যাশ পুনরাবৃত্তি বার 60 মিনিট মিনিট

2

এডাব্লুকে, 190 বাইট

#!/bin/awk -f
func p(x,y,c){printf("%2s ",x)
for(j=0;j<y;j++)printf(c)
print}BEGIN{for(;;){split(strftime("%H %M"),t)
m=t[2]
if(o!=m){p(a,30,"\n")
p(t[1],m,"-")
p((t[1]+1)%24,60-m,"-")}o=m}}

যেহেতু AWKকোনও অন্তর্নির্মিত sleepফাংশন নেই, তাই মিনিটটি এখনও পরিবর্তন হয়েছে কিনা তা দেখার জন্য আমি এটি ক্রমাগত ঘড়িটি পরীক্ষা করে দেখি। মূল জিনিসটি এটি কাজ করে ... ঠিক? :)


2

পাইথন 3.5, 127 120 117 বাইট

from time import*
while[sleep(9)]:h,m=localtime()[3:5];print('\n'*88,*['%2d '%x+'-'*y+'\n'for x,y in[(h,m),(h+1,60-m)]])

1
আপনি কেবল এটির print('\n'*50)পরিবর্তে না কি os.system('cls')এটি * নিক্স এবং উইন্ডোজ উভয় ক্ষেত্রেই কাজ করে? আপনি osআমদানি হারাতে পারেন বলে কয়েকটা বাইট সংরক্ষণ করতে পারে এবং ওপি বলে যে এটি অনুমোদিত।
এলপেড্রো

ওহ, আমি তখন এটি সঠিকভাবে পড়িনি। অনেক অনেক ধন্যবাদ।
গুরুপদ মামাদপুর

কেবলমাত্র তথ্যের জন্য, বেশিরভাগ লোকেরা তাদের পুরানো বাইট গণনাটির চারপাশে <s> </s> ব্যবহার করেন এবং এর পরে নতুন বাইট গণনাটি রাখেন কারণ উত্তরটি উন্নত হওয়ার সাথে সাথে অগ্রগতিটি দেখতে আকর্ষণীয় :-) অবশ্যই 3.5 টি চেষ্টা করতে হবে সময়। আমি এখনও পাইথন 2 নিয়ে কাজ করছি
এলপেড্রো

1
@ এলপিড্রো হ্যাঁ আমি এটি করতে ভুলে গেছি। আমি এখন সম্পাদনা করব।
গুরুপদ মামাদপুর

2

পাইথন, 115 113 বাইট

@ কান্ডর এবং @ ফিলারেক্সকে ধন্যবাদ জানিয়ে কয়েকটা বাইট সংরক্ষণ করেছে

import time
while 1:h,m=time.localtime()[3:5];print("\x1b[0;H{:02} {}\n{:02} {} ".format(h,"-"*m,h+1,"-"*(60-m)))

কমপক্ষে আমার সিস্টেমে এটি অন্তর্নিহিত অক্ষরগুলি মুছে ফেলবে না, যাতে দ্বিতীয় লাইনে ড্যাশগুলির সংখ্যা সময়ের সাথে সাথে নেমে যায় না। এছাড়াও: আপনি নিজের লাইনের লুপটি এক লাইনে রেখে দুটি বাইট এবং :02ফর্ম্যাটগুলি কেবলমাত্র পরিবর্তন করে সংরক্ষণ করতে পারেন :2
নিক মাতেও

2
@ কন্ডোর দ্বারা বর্ণিত সমস্যাটি 1 @ বাইটে সংশ্লিষ্ট {after এর পরে একটি স্থান যুক্ত করে সমাধান করতে পারেন}
Phlarx

@ কুন্ডর স্থির! ধন্যবাদ। আমি :02শূন্যগুলি সহ এক অঙ্কের ঘন্টা ফর্ম্যাটটি ডান প্যাডে রেখেছি ।
ডিফারানান

@ কুন্ডর * বাম-প্যাড শূন্য সহ এক অঙ্কের ঘন্টা।
dfernan

@ ডিফারান: ঠিক আছে, :2ফাঁকা জায়গাগুলির বাম-প্যাড, যা চ্যালেঞ্জ বলেছে ঠিক আছে।
নিক মাত্তিও

2

সি # ইন্টারেক্টিভ (138 বাইট)

while(true){var d=DateTime.Now;Console.WriteLine($"{d.Hour:00} {new string('-',d.Minute)}\n{d.Hour+1:00} {new string('-',60-d.Minute)}");}

1
আপনি কি 1 দ্বারা এটি গলফ করতে পারেন) dপরিবর্তে তারিখটির নামকরণ করবেন dt? এবং 2) ব্যবহার sleep(1e3)বা 999পরিবর্তে 1000?
স্টেইনবার্গ

@ সটেনবার্গ আপডেট দেখুন
সিরিজ 0

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

@TheLethalCoder আমি বিশেষত সি # ইন্টারেক্টিভ রেখেছি কারণ এটি কেবল ইন্টারেক্টিভ কনসোলে কাজ করে। এটি স্ট্যান্ডার্ড সি # প্রোগ্রাম হিসাবে কাজ করবে না।
সিরিজ 01

আরও মনে রাখবেন যে
সময়টি

2

পিএইচপি, 112 120 বাইট

for(;;sleep(9))echo($s=str_pad)($h=date(H),99,"\n",0).$s(" ",1+$m=date(i),"-")."\n".$s(++$h%24,2,0,0).$s(" ",61-$m,"-");

পর্দা সাফ করার কোনও উপায় নেই বলে (যেটি আমি খুঁজে পেতে পারি) আমাকে নতুন লাইনের একটি গাদা দিয়ে যেতে হয়েছিল। এছাড়াও প্রশ্ন "অন্তত" এ আপডেট করা হচ্ছে একবার এক মিনিট সঙ্গে একটি বাইট সংরক্ষণ 9পরিবর্তে 60

সম্পাদনা করুন: @ টিটাস দ্বিতীয় ঘন্টা প্যাডিংয়ে একটি বাগ লক্ষ্য করেছেন। এটি ঠিক করার জন্য 8 বাইট খরচ হয়।


এই প্রদর্শন সঠিক আউটপুট সঙ্গে বরাবর stdout- এ টেক্সট সতর্কতা: Notice: Use of undefined constant str_pad - assumed 'str_pad' in C:\wamp64\www\my-site\a.php on line 2 - Notice: Use of undefined constant H - assumed 'H' in C:\wamp64\www\my-site\a.php on line 2 - Notice: Use of undefined constant i - assumed 'i' in C:\wamp64\www\my-site\a.php on line 2। এ সম্পর্কে মেটাতে কিছু আছে?
স্টেইনবার্গ

@ সটেনবার্গ থাটাসা নোটিশ; আপনি যদি ডিফল্ট মান (কমান্ড লাইন প্যারামিটার -nবাerror_reporting(22519);
তিতাস

ঘন্টা অবশ্যই দৈর্ঘ্যে 2 প্যাড করা উচিত
টাইটাস

ভাল কথা, Hতারিখের সেটিংটি 00-23 থেকে চলে যায় তবে আমি দ্বিতীয় ঘন্টা এটি ভুলে গিয়েছিলাম।
ব্যবহারকারী59178

শারীরিক লাইনব্রেক সহ দুটি বাইট সংরক্ষণ করুন।
তিতাস

2

বাশ (3 এবং 4): 90 বাইট

d=(`sed s/./-/g<$0`);let `date +h=%H,m=%M`;echo $h ${d:0:m}'
'$[++h%24] ${d:m}
sleep 5
$0

ব্যবহারের কারণে $0, এই স্ক্রিপ্টটি অবশ্যই একটি ফাইলের মধ্যে রাখতে হবে, একটি ইন্টারেক্টিভ ব্যাশ শেলটিতে আটকে দেওয়া উচিত নয়।

প্রথম কমান্ড $d60 হাইফেন সেট করে; এটি এই স্ক্রিপ্টের প্রথম লাইনটি 60 টি অক্ষর দীর্ঘ বলে নির্ভর করে। আমি যে পরবর্তী সেরা জিনিসটি নিয়ে আসতে পারি তার চেয়ে এটি তিনটি অক্ষর সংক্ষিপ্ত:

d=`printf %060d|tr 0 -`

আপনি যদি চান না যে এটি আপনার বাক্সটি শেষ পর্যন্ত পিআইডি বা মেমরি থেকে চালিয়ে যায়, আপনি evalশেষ লাইনের শুরুতে যুক্ত করতে পারেন যা এটি 95 বাইট তৈরি করে।


আমাকে ত্রুটি দেয় let: h=09: value too great for base (error token is "09")। সমস্যা হ'ল নেতৃস্থানীয় শূন্যগুলি অক্টাল ধ্রুবক হিসাবে ব্যাখ্যা করা হয়, তাই 09 অবৈধ।
নিক মাত্তিও

এইচআরএম, এর অর্থ আমার স্ক্রিপ্টটি বিভিন্ন উপায়ে বিভক্ত। ধন্যবাদ।
ইভান কুলরে

2

বেস, 165 141 155 বাইট

while :
do
clear
m=`date +%-M`
a=`printf %${m}s`
b=`printf %$((60-m))s`
h=`date +%H`
echo $h ${a// /-}
printf "%02d %s" $((10#$h+1)) ${b// /-}
sleep 9
done

1
আমি ঘুম অপসারণ করে আরও 8 বাইট বাঁচাতে পারলাম, তবে ঘুম ছাড়া আমার কম্পিউটারে লুপ চলার সময় আমি অনির্দিষ্ট সময়ের সাথে স্বাচ্ছন্দ্যবোধ করি না ;-)
pLumo

কিছু অপ্টিমাইজেশন: sleep 9সময় লুপের শর্তে সরান ; -4 লাইনে ফর্ম্যাট স্ট্রিংয়ে এম এর সামনের অংশটি সরিয়ে ফেলুন You গাণিতিক এক্সপ্রেশনগুলিতে আপনার চলক নামের সামনে use ব্যবহার করার প্রয়োজনও নেই, তাই $((60-$m))হতে পারে$((60-m))
ইভান ক্রোল

9 নং লাইনে আপনার গণিতটি সঠিক কিনা তা আমি নিশ্চিত নই: h=23; echo $((10#$h+1))আমার জন্য 24 টি প্রিন্ট করে।
ইভান কুলরে

24 এর সাথে কি হয়েছে?
পিলুমো

আমার -M দরকার কারণ $ ((60-08)) একটি ত্রুটি দেয়।
পিলুমো

1

গুরা , 138 বাইট

k(a,b)={if(a<10){a="0"+a;}println(a," ","-"*b)};repeat{t=datetime.now();k(t.hour,t.min);k(t.hour+1,60-t.min);os.sleep(60);print("\n"*30);}

খুব ছোট এবং সোজা :)


বাহ ... তাড়াতাড়ি গুরা চালানোর কোনও পরামর্শ? সবেমাত্র বাইনারিগুলি ডাউনলোড হয়েছে, তবে এই কোডটিতে চালানো Gura.exeএবং আটকানো আমাকে একটি বাক্য গঠন ত্রুটি দেয় symbol k is not defined
স্টেইনবার্গ 17'17

সেমিকোলন ভুলে গেছি! আপনি এটি আবার চালানোর চেষ্টা করতে পারেন :)
সিগমেই

1
প্রতি মিনিটে এই আপডেট হয়? কনসোলটি এই কোডটি কেবল একবার চালাচ্ছে বলে মনে হচ্ছে ...
স্টেইনবার্গ

ওফস, সেই অংশটি দেখেনি, এখন কাজ করা উচিত!
Sygmei

যখন এটি আপডেট হয়, এটি স্ক্রিনটি সাফ করে বা 30 টি নতুন লাইন যুক্ত করা উচিত। মানুষ, আমি তোমার মামলায় ...
স্টেইনবার্গ

1

ঠিক আছে, কিছুক্ষণের মধ্যে একটি কোড গল্ফ করেনি, তাই আমার দুঃখজনক চেষ্টাটি এখানে চলে :)

ইউনিক্স কর্ন শেল: 177 171 170 বাইট

while :
do
clear
h=`date +%H`
m=`date +%M`
d=-----
d=$d$d$d$d
d=$d$d$d
a=`echo $d|cut -b-$m`
let m=60-$m
b=`echo $d|cut -b-$m`
let i=h+1
echo "$h $a\n$i $b"
sleep 9
done

2 ইকোগুলিকে 1 তে বিভক্ত করে কয়েকটি বাইট সংরক্ষণ করা হয়েছে ... (ঘুমের পরিবর্তে 9 ঘুমা 10 টি 1 বাইটে সাশ্রয় করে: পি) লোল
ডেটো

1

গণিত, 235 বাইট

d=UpdateInterval;e=Dynamic;f=Refresh;g=AbsoluteTime;Grid[Partition[Riffle[e[f[Floor@Mod[g[]/3600+#,24],d->1]]&/@{0,1},With[{t=#},e[f[""<>Array["-"&,If[t==60,60-#,#]]&@Setting@Floor@Mod[g[]/60+#,60],d->1]]]&/@{0,60}],2],Alignment->Left]

1

প্রক্রিয়াজাতকরণ, 204 200 198 197 বাইট

5 বাইট সংরক্ষিত হয়েছে @ এলকে ধন্যবাদ স্মার্ট টেরিনারি ব্যবহার করে সের্নে

void draw(){int i;String s=((i=hour())>9?i:" "+i)+" ";for(i=0;i<minute();i++)s+="-";s+="\n"+((i=hour()+1)>9?i>23?" 0":i:" "+i)+" ";for(i=0;i<60-minute();i++)s+="-";print(s);for(;i++<99;)println();}

এটি প্রতিটি আপডেটের জন্য 30+ নতুনলাইনগুলি আউটপুট করে (ফ্রেম আপডেট হওয়ার সাথে সাথে এটি ঘটে)

Ungolfed

void draw(){
  int i;
  String s=((i=hour())>9?i:" "+i)+" ";
  for(i=0;i<minute();i++)
    s+="-";
  s+="\n"+((i=hour()+1)>9?i>23?" 0":i:" "+i)+" ";
  for(i=0;i<60-minute();i++)
    s+="-";print(s);
  for(;i++<99;)
    println();
}

পরিবর্তন ((i=hour())<10?" ":"")+iমধ্যে ((i=hour())>9?i:" "+i)আরও golfing সঙ্গে 2B দুইবার ... সৌভাগ্য কামনা করছি রক্ষা হবে!
লুক

@ এল.সর্ন টিপটির জন্য ধন্যবাদ :)
ক্রিটসি লিথোস

আর একটি উন্নতি যা কাজ করতে পারে: পরে, ((i=hour()+1)>24?i=0:i)>9হয়ে যায়(i=hour()+1)>9hour 0-23 পরিসীমাটিতে একটি সংখ্যা বের করে দেয় এবং এর সাথে 1 যুক্ত করে এটি কখনই 24 এর বেশি হবে না Also এছাড়াও, আপনাকে iঅবস্থার ভিতরে বৃদ্ধিটি forলুপের মধ্যে স্থানান্তরিত করা উচিত আপনি যেমন শেষ লুপ করেছেন। মোট 13 বি সঞ্চয় করা উচিত।
লুক

@ এল। সের্নে প্রথম পয়েন্টের জন্য, আমাকে এখনও ত্রয়ীটি অন্তর্ভুক্ত করতে হবে কারণ 24 ঘন্টা একটি ঘড়ির 23 + 1 0 হয়ে যায় (বা কমপক্ষে আমার মনে হয়)। এরপরে, যদি আমি iফর-লুপের শর্তের ভিতরে বর্ধন সরিয়ে রাখি , iতার 1পরিবর্তে শুরু হবে 0এবং আমাকে আরও একটি বাইট যুক্ত করতে i++<=minute()হবে এবং বাইকাউন্টটি এখনও একই থাকবে। তবে তা সত্ত্বেও, আমাকে আরও 1 বাইট গল্ফ সাহায্য করার জন্য ধন্যবাদ :)
ক্রিটসি লিথোস

1

সি, 239 বাইট

#include<time.h>
#include<unistd.h>
#define F printf(
void d(n,p){for(;n--;F"%c",p));}int main(){time_t*t;for(;;){d(30,10);time(t);int*m=localtime(t);F"%2d ",m[2]);d(m[1],45);F"\n%2d ",(m[2]+1)%24);d(60-m[1],45);F"\n");sleep(1);}return 0;}

শেঠ এবং আবেলের এন্ট্রি দ্বারা অনুপ্রাণিত, এটি পরবর্তী ঘন্টা হিসাবে 24 এর পরিবর্তে 0 আউটপুট দেবে, প্রয়োজন হিসাবে 30 পংক্তিটি পর্দা সাফ করতে ব্যবহার করবে।


1

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

TMREAD OUT H,M,
CLS?H,"-"*M?(H+1)MOD 24,"-"*(60-M)EXEC.

ব্যাখ্যা:

TMREAD OUT HOUR,MINUTE,
CLS
PRINT HOUR,"-"*MINUTE
PRINT (HOUR+1) MOD 24,"-"*(60-MINUTE)
EXEC 0 'runs the code stored in slot 0 (the default)

দ্রষ্টব্য: স্মাইলব্যাসিকের কেবল 50 টি কলামের পাঠ্য রয়েছে, তাই এটি দেখতে ভাল লাগবে না ...


1

সি # 181 176

for(;;){Console.Clear();var t=DateTime.Now;var h=t.Hour;var m=t.Minute;Console.Write("{0,2} {1}\n{2,2} {3}",h,"".PadLeft(m,'-'),++h%24,"".PadLeft(60-m,'-'));Thread.Sleep(100);}

এই কোডটি ধরে নিয়েছে যে using System.Threading;লাইনটি অন্তর্ভুক্ত রয়েছে।

সম্পূর্ণ শ্রেণি:

class Program
{
    static void Main(string[] args)
    {
        Console.Title = string.Format("Started the app at: {0}", DateTime.Now.TimeOfDay);
        //new Timer((o) => { Console.Clear(); var t = DateTime.Now; var h = t.Hour; var m = t.Minute; Console.Write("{0,2} {1}\n{2,2} {3}", h, "".PadLeft(m, '-'), ++h % 24, "".PadLeft(60 - m, '-')); }, null, 0, 60000);

        for (; ; ) { Console.Clear(); var t = DateTime.Now; var h = t.Hour; var m = t.Minute; Console.Write("{0,2} {1}\n{2,2} {3}", h, "".PadLeft(m, '-'), ++h % 24, "".PadLeft(60 - m, '-')); Thread.Sleep(100); }

        Console.ReadKey(true);
    }
}

এই সমাধানটির লুপ থেকে বেরিয়ে আসার কোনও উপায় নেই (মূল, মন্তব্য করা, একটি পৃথক থ্রেডে কোড চালায়), সুতরাং Console.ReadKeyবিবৃতিটি অপ্রয়োজনীয়। প্রস্থান করার একমাত্র উপায় হ'ল হয় কনসোল উইন্ডোটি বন্ধ করা বা Ctrl+Break...
নুরচি

এটি কেবল একটি কোড স্নিপেট যা কোনও পদ্ধতি বা প্রোগ্রাম নয়, using System.Threading;আপনি যদি এটি ব্যবহার করেন তবে বাইট গণনাতেও অন্তর্ভুক্ত করা দরকার। একই সঙ্গে Using System;
TheLethalCoder
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.