অগ্রিম শুভ নববর্ষ, 2016!


40

আপনার ইনপুটটি এক বছরের প্রতিনিধিত্ব করে 1970 এবং 2090 (সমেত) এর মধ্যে পূর্ণসংখ্যা হবে। আপনার প্রোগ্রামটি পরের বছর আউটপুট করা উচিত যার উপর নতুন বছর দিবস ইনপুট বছর হিসাবে একই সপ্তাহে পড়ে।

পরীক্ষার কেস:

নীচে নমুনা ইনপুট এবং আউটপুট রয়েছে

2001 => 2007
2047 => 2058
2014 => 2020
1970 => 1976
1971 => 1982
1977 => 1983
2006 => 2012

20% বোনাস: নতুন বছর দিবসের সপ্তাহের দিনটি আউটপুট দেয়

2001 => 2007 (Mon)
2047 => 2058 (Tue)
2014 => 2020 (Wed)
1970 => 1976 (Thu)
1971 => 1982 (Fri)
1977 => 1983 (Sat)
2006 => 2012 (Sun)

30% বোনাস: আউটপুটAdvance Happy New Year, <year>

2010 => Advance Happy New Year, 2016

50% বোনাস: উপরের দুটি বোনাসই করুন

2010 => Advance Happy New Year, 2016 (Fri)

এমন একটি প্রোগ্রাম লিখুন যা এসটিডিআইএন থেকে ইনপুট পড়ে বা কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে, বা কোনও ফাংশন যা আর্গুমেন্ট গ্রহণ করে।

দ্রষ্টব্য: যদি সম্ভব হয় তবে আপনার কোডটি পরীক্ষা করতে একটি লিঙ্ক যুক্ত করুন।

লিডারবোর্ড:


6
আমি মনে করি প্রতিটি একক তারিখের চ্যালেঞ্জের জন্য একটি সাবপ্রব্লেম হিসাবে লিপ বছর গণনা করা দরকার এবং এটি বাসি হয়ে যাচ্ছে।
xnor


@ এক্সনর যদি এটি না হয় তবে এটি কেবল একটি +7 হত। অর্থাৎ "খুব বিস্তৃত"
এরিক আউটগল্ফার

@ এরিক্থে গল্ফার ন। আমি যখন এই মন্তব্যটি লিখেছিলাম তখন আমার উত্তরটি গ্রহণযোগ্য।
ডেনিস

উত্তর:


1

জেলি, 9 বাইট

%4*3%7+5+

এটি একটি মোনাডিক চেইন যা একটি পূর্ণসংখ্যা কমান্ড-লাইন আর্গুমেন্টটিকে ইনপুট হিসাবে গ্রহণ করে। এটি আমার (x+5+(x%4)**3%7)অ্যালগরিদম ব্যবহার করে ।

এখানে চেষ্টা করুন । যদিও এটি জেলিটির বর্তমান সংস্করণ, এটি এই সংস্করণেও কাজ করে যা চ্যালেঞ্জের পূর্বাভাস দেয়। (ধন্যবাদ @ ডেনিস!)


এটা চমৎকার! আমি নিশ্চিত করতে পারি যে এটি জেলি ইন্টারপ্রেটারের এই সংশোধনটির সাথে কাজ করে , যা চ্যালেঞ্জের পূর্বাভাস দেয়।
ডেনিস

31

গণিত, 45 37 27 24 বাইট

#+5[6,6,11][[#~Mod~4]]&

উন্নতিগুলি @ মার্টিনবাটনার (10 বাইট), এবং @ শিপহার্স্টকে (আরও 3 বাইট) ধন্যবাদ জানায়।


7
কি শান্তি. কেউ এই প্যাটার্নটি লক্ষ্য করেছেন বলে মনে হয় না, তবে এটি কার্যকর হয়।
লিন

4
এখানে একটি সামান্য সংক্ষিপ্ত সংস্করণ:#+5[6,6,11][[#~Mod~4]]&
চিপ হার্স্ট

@ শিপহার্স্ট এর সাথে খুব চতুর 5[6, 6, 11][[0]]:)
মার্টিন

18

সিজেম, 21 12 11 বাইট

{_9587Cb=+}

@ মার্টিন খুব সহজ পদ্ধতি খুঁজে পেয়েছে!

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

সম্পাদনা: ধন্যবাদ, ডেনিস!


1
@ মরিস আপনি কি একটি ব্যাখ্যা যোগ করতে পারেন?
ভাসু আদারি

@ ভাসু: এই কোডটি একটি বেনামি ফাংশন যা 5 6 6 11অন্যান্য উত্তরে ব্যবহৃত একই কৌশলটিকে প্রয়োগ করে তবে তালিকাটি "বেস 12-তে 9587 এর অঙ্ক" হিসাবে এনকোড করা আছে ।
লিন

বুঝেছি ধন্যবাদ. আমি আপনাকে একটি ব্যাখ্যা যুক্ত করতে চেয়েছিলাম যাতে আপনার উত্তর যাচাই করে এমন লোকেরা বুঝতে পারে যে এটি কীভাবে কব্জী ভাষা ব্যবহার করে।
ভাসু আদারী

10

জিএস 2, 12 বাইট

V@¶4☻s%☺♀i50

আমার সিজেএম উত্তরের অনুবাদ। যথারীতি সিপি 437 এ এনকোড করা হয়েছে। এটি অনলাইন চেষ্টা করুন !


লিঙ্কটি এমন কোডে যায় যা 2 স্পুকি 4 মেন উত্পাদন করে এবং আমি যদি উপরের কোডটি কেটে পেস্ট করি তবে আমি ভুল বছরটি পেয়ে যাব: imgur.com/VAkXT0k ("ভুল বছর" দ্বারা, আমি অভিযুক্ত বছরের চেয়ে এক বছর আগে পেয়েছি)
question_asker 13

আমি একটি বাইট ভুলে গেছি এখন চেষ্টা কর.
লিন

আমিও লিঙ্কটি সম্পাদনা করেছি।
লিন

কুল, এটি এখন কাজ করে
question_asker

8

জাভাস্ক্রিপ্ট (ES6), 50 49 20 বাইট (কোনও বোনাস নেই)

a=>a+[5,6,6,11][a%4]

@ মার্টিনের দ্বারা তৈরি অ্যালগরিদম অনেক ছোট প্রমাণিত, তাই আমি এটি নিয়ে গেলাম।

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

এখানে আমার পূর্ববর্তী উত্তর (49 বাইট) এবং আমার আসল উত্তর (50 বাইট):

F=(a,b=a)=>((a+--a/4|0)-(b++/4+b|0))%7?F(++a,b):b

F=(a,b=a)=>(f=c=>(c--+c/4|0)%7)(a)-f(++b)?F(a,b):b

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


7

পাইথ, 14 12 11 বাইট

+QC@"♣♠♠♂"Q

স্ট্রিংয়ের চারটি বাইট হওয়া উচিত 05 06 06 0B

সম্পাদনা: ধন্যবাদ, ফ্রাইআম দ্য এজম্যান!

সম্পাদনা: ধন্যবাদ, ডেনিস!


6

জাভাস্ক্রিপ্ট (ES6), 104 বাইট - 50% বোনাস = 52

y=>eval('for(a=0;a!=(b=(new Date(""+y++)+"").slice(0,3));a=a||b)`Advance Happy New Year, ${y} (`')+b+")"

ব্যাখ্যা

y=>
  eval(`                  // eval enables for loop without {} or return
    for(
      a=0;                // a = first day of input year
      a!=                 // check if the day of the current year is equal to the first
        (b=(new Date(     // b = day of current year
          ""+y++)+"")     // cast everything as strings!
            .slice(0,3)); // the first 3 letters of the date string are the day name
      a=a||b              // set a to the day on the first iteration
    )

      // return the string
      \`Advance Happy New Year, \${y} (\`
  `)+b+")"

পরীক্ষা


6

জেড 80 মেশিন কোড, 12 বাইট

একটি জেড 80 পদ্ধতিতে সংরক্ষণ করতে হবে 0000h, ইনপুটটির সাথে ডাকা HLহবে এবং অন্য সমস্ত নিবন্ধগুলি পরিষ্কার:

.org 0000h
              ; Bytes   ; Explanation
  ;---------------------------------------------------------------
  DEC B       ; 05      ; 
  LD B, 6     ; 06 06   ;   
  DEC BC      ; 0B      ;
  LD A, 3     ; 3E 03   ;   A = 3
  AND L       ; A5      ;   A = input & 3
  LD E, A     ; 5F      ;   A = input & 3     DE = input & 3
  LD A, (DE)  ; 1A      ;   A = [input & 3]   DE = input & 3
  LD E, A     ; 5F      ;   A = [input & 3]   DE = [input & 3]
  ADD HL, DE  ; 19      ;   HL = input + offset
  RET         ; C9      ;

প্রথম তিনটি নির্দেশাবলী হ'ল "এনওপিগুলি", তবে কোডের পরে এটি ডেটা হিসাবে সূচিযুক্ত। ফিরে আসার পরে, আউটপুট হয় HL


হ্যাঁ, আমি এটি পোস্টে যুক্ত করেছি।
লিন

2097 এবং 2098 বছর ধরে সঠিক দেখাচ্ছে না, যার যথাক্রমে 7 এবং 12 এর সংযোজন দরকার।
টবি স্পিড

1
ওপি জানিয়েছে যে ইনপুট বছরটি 1970-1590 পরিসরের মধ্যে গ্যারান্টিযুক্ত।
লিন

6
আমি উত্তর দেওয়ার পরে পরিবর্তন করা প্রশ্নগুলি সত্যিই পছন্দ করি না!
টবি স্পিড

2
আপনি কি ইনপুটটি নির্দিষ্ট আছে DEএবং তাই আপনি ব্যবহার করতে পারবেন তা অনুমোদিত LD A, 3; AND E; LD L, A; LD L, (HL);?
নীল

5

পাইথন 3, 140 100 102 84.5 154 * 0.5 = 77 বাইট

আমি সম্ভবত সাকামোটোর অ্যালগরিদম দিয়ে আরও ভাল সমাধান লিখতে পারি, তবে এটি আপাতত করবে

আমি সঠিক ছিলাম. এখানে সাকামোটোর অ্যালগরিদম ব্যবহার করে একটি বাস্তবায়ন দেওয়া হয়েছে।

def s(y):
 d=lambda j:(j+j//4)%7
 for i in range(y,y+15):
  if d(i)==d(y-1):return"Advance Happy New Year, %d (%s)"%(-~i,"SMTWTFSuouehranneduit"[d(i)::7])

ব্যাখ্যা:

def day_of_the_week(year):
    return (year + year//4 - 1 + 0 + 1) % 7
    # The month code for January is 0, and you add 1 from January *1*.
    # The -1 is to correct for starting on Saturday 
    # and so that it cancels out the 1 from January 1.

def new_years(this_year):
# But in Sakamoto's algorithm, if the month is January or February, we must subtract 1.
    weekdays = "SunMonTueWedThuFriSat"
    for item in range(this_year, this_year + 15):
        if day_of_the_week(this_year - 1) == day_of_the_week(item):
            day = weekdays[day_of_the_week(item)*3 : day_of_the_week(item)*3+3]
            return "Advance Happy New Year, %d (%s)"%(item + 1, day)
        # So we subtract from every year we check, including this_year
        # And add 1 back in at the end
        # And print the greeting, the year, and the corresponding day of the week

আমি প্রশ্ন আপডেট করেছি। আপনার কয়েক শতাব্দী ধরে পরীক্ষা করার দরকার নেই।
ভাসু আদারি

1
কীভাবে w="SMTWTFSuouehranneduit"এবং তারপরে মুদ্রণ w[d(i)::7]?
লিন

4

গুরুতরভাবে, 35 17 বাইট

[5,6,6,11] কৌতুক দিন বাঁচায়

4,;)%[5,6,6,11]E+

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

ব্যাখ্যা:

4,;)%[5,6,6,11]E+
4,;)%              push input, input % 4
     [5,6,6,11]E   push (input % 4)th element of [5,6,6,11]
                +  add to the input

পুরাতন রুপ:

,;;D`45/*≈7@%`;╝ƒ╗35*r+`╛ƒ╜=`M1@íu+

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

ব্যাখ্যা:

,;;D`45/*≈7@%`;╝ƒ╗35*r+`╛ƒ╜=`M1@íu+
,;;                                  push 3 copies of the input (n)
   D                                 decrement the top copy of n
    `45/*≈7@%`;╝                     push Sakamoto's algorithm as a function and save a copy in register 1
                ƒ╗                   call Sakamoto's algorithm function and save result in register 0
                  35*r+              push [n, n+1, ..., n+14]
                       `    `M       map the function:
                        ╛ƒ╜=           push Sakamoto's algorithm, call, push 1 if equal to value in register 0 else 0
                              1@í    get the index of the first 1
                                 u+  increment and add n

সাকামোটোর অ্যালগরিদম:

45/*≈7@%
45/*      multiply by 5/4
    ≈     floor
     7@%  mod 7

4

সি, 31 বাইট

এমন প্রশ্নের সম্পাদনা অনুসরণ করে যা ইনপুট পরিসীমাটি 1970-2090-এ সীমাবদ্ধ করে, এটি বেশ তুচ্ছ হয়ে ওঠে:

f(x){return"\5\6\6\13"[x%4]+x;}

নন-লিপ শতাব্দী বছর বাদে, একই দিনের প্রথম পুনরাবৃত্তির জন্য অন্তরগুলির একটি সহজ 5,6,6,11 ক্রম রয়েছে।

মূল সমস্যার সম্পূর্ণ সমাধান (2090 সীমাবদ্ধ নয়), 90 বাইট:

f(x){return(x-1)%100>89&&(x+9)/100%4?"\6\14\5\6\6\6\6\7\14\6"[x%10]+x:"\5\6\6\13"[x%4]+x;}

পরীক্ষা প্রোগ্রাম:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    while (*++argv)
        printf("Advance Happy New Year, %d\n", f(atoi(*argv)));
    return !argc;
}

পরীক্ষা রান:

$ ./66656 2001 2047 2014 1970 1971 1977 2006
Advance Happy New Year, 2007
Advance Happy New Year, 2058
Advance Happy New Year, 2020
Advance Happy New Year, 1976
Advance Happy New Year, 1982
Advance Happy New Year, 1983
Advance Happy New Year, 2012

4

আর, 143 136 * 0.5 = 68 বাইট

G=function(y)strftime(paste(y,1,1,sep='-'),'%a')
d=seq(y<-scan(),y+14);sprintf("Advance Happy New Year, %i (%s)",d[G(d)==(w=G(y))][2],w)

%Aপুরো দিনের নামের জন্য `% a এর পরিবর্তে ব্যবহার করুন, কাঙ্ক্ষিত অবস্থার উপর নির্ভর করুন।

আর, 120 * 0.7 = 84 বাইট

G=function(y)as.POSIXlt(paste(y,1),,"%Y %j")$wday
d=seq(y<-scan(),y+14);cat("Advance Happy New Year,",d[G(d)==G(y)][2])

আর, 90 বাইট

G=function(y)as.POSIXlt(paste(y,1),,"%Y %j")$wday
d=seq(y<-scan(),y+14);d[G(d)==G(y)][2]

উপরের সমস্ত উত্তরগুলি @ প্ল্যানাপাস জবাবের ভিত্তিতে ডেরিভেটিভ কাজ। ফাইলের ;প্রয়োজন এড়াতে sourceবা কমান্ড লাইনে স্ক্রিপ্ট হিসাবে এটি চালানোর জন্য বিভাজক ব্যবহার করে ।


1
+1 আমি পুরোপুরি ভুলে গেছি weekdays, দুর্দান্ত।
প্ল্যানাপাস

@ প্লানাপাস থ্যাঙ্কস :) (আমি নিউলাইনগুলি গণনা করেছি, ফাইল সিস্টেমটি আসলে জিজ্ঞাসা করেছি, আমি উইন্ডোসের নীচে থাকি কারণ এটি 2 বাইট রয়েছে তবে শেষ পর্যন্ত আমার কোনও লাইন নেই যার কোনও পসিক্স ফাইল থাকতে হবে, সুতরাং এটি এটিকে ঠিক রাখা ঠিক হবে) প্রকৃতপক্ষে)
তেনসিবাই

3

আর, 145 বাইট -50% -> 72.5

y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%a");x=y+1;while(F(x)!=F(y))x=x+1;sprintf("Advance Happy New Year, %i (%s)",x,F(x))

উদাহরণ:

> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%a");x=y+1;while(F(x)!=F(y))x=x+1;sprintf("Advance Happy New Year, %i (%s)",x,F(x))
1: 2006
2: 
Read 1 item
[1] "Advance Happy New Year, 2012 (Sun)"
> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%a");x=y+1;while(F(x)!=F(y))x=x+1;sprintf("Advance Happy New Year, %i (%s)",x,F(x))
1: 1977
2: 
Read 1 item
[1] "Advance Happy New Year, 1983 (Sat)"
> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%a");x=y+1;while(F(x)!=F(y))x=x+1;sprintf("Advance Happy New Year, %i (%s)",x,F(x))
1: 2014
2: 
Read 1 item
[1] "Advance Happy New Year, 2020 (Wed)"

আর, by৯ বাইট (বোনাস ছাড়াই)

y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%w");x=y+1;while(F(x)!=F(y))x=x+1;x

নতুন লাইনের সাহায্যে ইন্ডেন্ট করা:

y = scan() #Takes input from stdin
F = function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%w") #Year to Weekday
x = y+1
while(F(x) != F(y)) x = x+1
x

পরীক্ষার কেস:

> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%w");x=y+1;while(F(x)!=F(y))x=x+1;x
1: 1977
2: 
Read 1 item
[1] 1983
> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%w");x=y+1;while(F(x)!=F(y))x=x+1;x
1: 2006
2: 
Read 1 item
[1] 2012
> y=scan();F=function(y)format(as.POSIXct(paste(y,1),,"%Y %j"),"%w");x=y+1;while(F(x)!=F(y))x=x+1;x
1: 2016
2: 
Read 1 item
[1] 2021


আপনি প্রথমটি সরিয়ে y=scan;এবং x=y<-scan()+1আমার মনে হয় ব্যবহার করে 1 চর সংরক্ষণ করতে পারেন
তেনসিবাই

এবং আপনি as.POSIXlt(paste(y,1),,"%Y %j")$wdayআপনার ফাংশন বডি হিসাবে ব্যবহার করে আরও সাতটি বাঁচাতে পারবেন
তেনসিবাই

@ টেনসিবাই যদি আপনি এটি একটি এক লাইনে না রেখে সরাসরি কনসোলে পেস্ট scanকরেন তবে দ্বিতীয় লাইনে ইনপুট হিসাবে পড়বে will x=y<-scan()+12014 এর সাথে স্টিডিন আপনাকে x = 2015 এবং y = 2015 দেবে (যেমন অ্যাসাইনমেন্টটি হ'ল y <- scan()+1) এবং যদি আপনি x=1+y<-scan()এটি করার চেষ্টা করেন তবে আপনাকে একটি ত্রুটি ( Error in 1 + y <- scan() : target of assignment expands to non-language object) দেবে কারণ এটি বরাদ্দ scan()করার চেষ্টা করা হচ্ছে 1+y
প্ল্যানাপাস

@ টেনসিবাই আপনার শেষ পরামর্শ হিসাবে, ফলাফলগুলি ...$wdayহ'ল সপ্তাহের দিন নম্বর: তবে এখানে আমার সপ্তাহের নাম দরকার যাতে আমি মুদ্রণ করতে পারিAdvance Happy New Year, 2012 (Sun)
প্ল্যানাপাস

3

ভিবিএ, 130 * 0.50 = 65 বাইট

Sub k(y)
i=1
Do While Weekday(y+i)<>Weekday(y)
i=i+1
Loop
MsgBox "Advance Happy New Year," &y+i &WeekdayName(Weekday(y+i))
End Sub

ভিবিএ সপ্তাহের দিনগুলি সন্ধান করা এত সহজ করে তোলে .... কেবল যদি এটি সম্পর্কে ভার্বোজ না হত।


3

পিএইচপি, 120 139 বাইট - 50% = 60 বাইট

একটি কার্যকরী পদ্ধতির:

$s=strtotime;for($d=date(D,$s(($y=$argv[1]).$_="-1-1"));$d!=date(D,$s(++$y.$_)););echo"Advance Happy New Year, $y ($d)";

কমান্ড লাইন থেকে একটি ইনপুট নেয়, যেমন:

$ php ahny.php 2001

ওওপি পথটি বরাবরের মতো দীর্ঘ বলে মনে হচ্ছে (143 বাইট):

$s=strtotime;for($d=date(D,$s($x=($y=$argv[1])."-1-1"));$d!=date(D,$s(++$y."-1-1")););echo"Advance Happy New Year, $y ($d)";

সম্পাদনাগুলি

  • সংরক্ষিত 18 বাইট । পিএইচপি মডিফায়ার ব্যবহার করে এক বছর যুক্ত করার পরিবর্তে +1year, আমি এখন কেবলমাত্র প্রদত্ত বছরটি বাড়িয়েছি।
  • সংরক্ষিত 1 বাইট মজুত করে -1-1একটি পরিবর্তনশীল হবে।

3

সি, স্কোর 53 52 (104 বাইট)

f(x){x+="0116"[x%4];printf("Advance Happy New Year, %d (%.3s)",x-43,"MonTueWedThuFriSatSun"+x*5/4%7*3);}

টবি স্পিড থেকে ধার নেওয়া আইডিয়া ; সপ্তাহের দিন বোনাস প্রদর্শন যোগ।

অক্ষর কোডগুলি আরও আরামদায়ক পরিসরে স্থানান্তরিত করে স্ট্রিংটি সংক্ষিপ্ত করে। সংক্ষিপ্ত সপ্তাহের দিন গণনা কোডের x*5/4%7কাজ করতে ডান স্থানান্তর পরিমাণ (যেমন 43) বেছে নিতে হয়েছিল ।


আমি এটি আপনার অক্ষর কোড স্টাফ এএসসিআই-সামঞ্জস্যপূর্ণ এনকোডিংগুলিতে সীমাবদ্ধ রাখি?
টবি স্পিড

হ্যাঁ. কোডগুলি 31 এর বেশি হওয়া উচিত, সুতরাং কোডগুলিতে যুক্ত করতে সর্বনিম্ন সংখ্যা 27 হবে, স্ট্রিংটি দিয়ে " !!&"
anatolyg

2

গণিত, 145 * 50% = 74 73.5 72.5 বাইট

d=DateValue;StringForm["Advance Happy New Year, `` (``)",NestWhile[#+1&,(a=#)+1,#!=#2&@@DateObject@{{a},{#}}~d~"DayName"&],{a}~d~"DayNameShort"]&

মানক তারিখ ফাংশন ব্যবহার করে।


2

পাইথ, 23 বাইট

L%+/b4b7.VQIqyby-Q1+1bB

কোনও বোনাসের জন্য যোগ্যতা অর্জন করে না।

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

খাঁটি অজগর উত্তরের মতো।

                        - Q = eval(input()) (autoassigned)
L                       - y = lambda b:
   /b4                  - b floordiv 4
  +   b                 - + b
 %     7                - mod 7


        .VQ             - for b in range(Q, infinate):
           Iqyby-Q1     - if y(b) == y(Q-1):
                   +1b  - print b+1
                      B - break

2

জাভা, (1-.2) * 323 (1-.5) * 350 348 339 = 258.4 175 174 169.5 বাইট

import java.text.*;class D{public static void main(String[]a){long y=new Long(a[0]);int i=0;for(;!s(y).equals(s(y+(++i))););System.out.printf("Advance Happy New Year, %d (%s)",y+i,s(y+i));}static String s(long y){try{return new SimpleDateFormat("E").format(new SimpleDateFormat("d/M/yyyy").parse("1/1/"+y));}catch(Exception e){}return"";}}

বিতৃষ্ণা।

Ungolfed:

import java.text.*;
class D{
    public static void main(String[]a){
        long y=new Long(a[0]);
        int i=0;
        for(;!s(y).equals(s(y+(++i))););
        System.out.printf("Advance Happy New Year, %i (%s)",y+i,s(y+i));
    }
    static String s(long y){
        try{
            return new SimpleDateFormat("E").format(new SimpleDateFormat("d/M/yyyy").parse("1/1/"+y));
        }catch(Exception e){}
        return"";
    }
}

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

আমি new Longএবং সংক্ষিপ্ত করতে পারি যে নির্দেশ করার জন্য @ কেনিকে ধন্যবাদ printf! : ডি


long y=new Long(a[0])6 (12) বাইট printfসংরক্ষণ করে এবং আরও 3 (6) সাশ্রয় করে।
কেনে

2

জিএনইউ কোর্টিলস, 52 51 49 বাইট

(98 বাইট প্রোগ্রাম - 50% বোনাস)

seq -f$1-1-1\ %gyear 28|date -f- +'Advance Happy New Year, %Y (%a)'|sed /`date -d$1-1-1 +%a`/!d\;q

ইনপুটটি কমান্ড-লাইন আর্গুমেন্ট থেকে এবং আউটপুটটি স্টডআউট হয় out

ব্যাখ্যা

# generate 28 input years from $1 + 1 onwards (28 is always enough)
seq -f '$1-1-1 %g year' 28
|
# convert all of these as potential outputs
date -f- +'Advance Happy New Year, %Y (%a)'
|
 # Select the first one where the dayname matches that of input year
sed "/`date -d$1-1-1 +%a`/!d;q"

পরীক্ষা রান:

সমস্ত স্থানীয় সেটিংস হতে পারে Cবা POSIX

$ for i in 2001 2047 2014 1970 1971 1977 2006; do ./66656.sh $i; done
Advance Happy New Year, 2007 (Mon)
Advance Happy New Year, 2058 (Tue)
Advance Happy New Year, 2020 (Wed)
Advance Happy New Year, 1976 (Thu)
Advance Happy New Year, 1982 (Fri)
Advance Happy New Year, 1983 (Sat)
Advance Happy New Year, 2012 (Sun)

সীমাবদ্ধতা: এটি কেবল বছরের জন্য 2147485519 পর্যন্ত কাজ করে (যদিও এখন প্রশ্নটি নিম্ন সীমাতে অনুমতি দেওয়া হয়েছে)।


2

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

i0:14+t1tI$YO8H$XO!st1)=f2))

উদাহরণ

>> matl i0:14+t1tI$YO8H$XO!st1)=f2))
> 1970
1976

কোড ব্যাখ্যা করা হয়েছে

i           % input year
0:14+       % vector with that year and the next 14
t1tI$YO     % first day of each year
8H$XO       % transform into three letters specifying weekday
!s          % sum those three letters to reduce to unique numbers
t1)         % get first of those numbers (corresponding to input year)
=f2)        % find index of second matching
)           % index with that to obtain output year



2

জাপট, 12 বাইট

U+"♣♠♠♂"cU%4

পাইথের উত্তর হিসাবে, স্ট্রিংয়ের চারটি বাইট হওয়া উচিত 05 06 06 0Bএটি অনলাইন চেষ্টা করুন!

U+"♣♠♠♂"cU%4  // Implicit: U = input integer
  "♣♠♠♂"      // Take this string.
        cU%4  // Take the char code at U%4.
U+            // Add U.
              // Implicit: output last expression

2
অনুগ্রহের এই ক্রিসমাস উপহারের জন্য ধন্যবাদ! তবে কেউ কি বলতে পারেন আমি কীভাবে এটি অর্জন করেছি?
ETH প্রোডাকশনগুলি

আমি ইতিহাস দিয়ে দেখেছি। স্পষ্টতই ওপি একটি উত্তর অনুগ্রহ করার চেষ্টা করেছিল, তবে অনুগ্রহটি প্রদান করতে ভুলে গিয়েছিল, সুতরাং সম্প্রদায় এই উত্তরটির অর্ধেক খ্যাতি অর্জন করতে বেছে নিয়েছে (আমার ধারণা এটি সাম্প্রতিক উর্ধ্বতনগুলিতে তার পছন্দকে ভিত্তি করে)।

2

জেলি , 14 বাইট

%4=0,3×-,5S++6

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

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

ị6,6,11,5+

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


1
আমি মনে করি জেলি 10 ~ 16 ধ্রুবকের জন্য 7 টি অক্ষর রেখে দিতে পারে।
lirtosiast


1

সি # (6.0)। নেট ফ্রেমওয়ার্ক 4.6 173 বাইট - 30% = 121.1 বাইট

void n(int y)=>Console.Write($"Advance Happy New Year, {Enumerable.Range(1,15).Select(i=>new DateTime(y+i,1,1)).First(x=>x.DayOfWeek==new DateTime(y,1,1).DayOfWeek).Year}");

1

জাভাস্ক্রিপ্ট ES7, 17 বাইট

a=>a+5+(a%4)**3%7

এটি আমার প্রথমবারের মতো জেএস ব্যবহার করে। আমি পাইথন স্ক্রিপ্টটি ব্যবহার করে এটি পেয়েছি এবং আমি এটি সর্বোত্তম বলে বিশ্বাস করি। এটি 0**30 মোড 7, 1**3এবং 2**3উভয়ই 1, এবং 3**36 এর কারণ এটি কাজ করে ।


1
নন Exponentiation অপারেটর** একটি ES7 বৈশিষ্ট্য? বা আপনি ব্যাবেল ব্যবহার করছেন ?
insertusernamehere এখানে

নিবন্ধন করুন
lirtosiast

1

পাইথন, 23 বাইট

lambda a:a+5+(a%4)**3%7

আমার জাভাস্ক্রিপ্ট উত্তরের একটি বন্দর।


1

পাইথ , 12 বাইট

++5%^%Q4 3 7

এটি অনলাইন চেষ্টা করুন! বা টেস্ট স্যুটটি পরীক্ষা করে দেখুন।

পাইথ , 18 বাইট

এই দ্বিতীয় পদ্ধতির মূলত @ wizzwizz4 এর পাইথ উত্তরের একটি গল্ফ ।

J%Q4+?q3J11?qJZ5 6

এটি অনলাইন চেষ্টা করুন! বা টেস্ট স্যুটটি পরীক্ষা করে দেখুন।


ব্যাখ্যা

++ 5% ^% Q4 3 7Q - Q অর্থ মূল্যায়িত ইনপুট এবং শেষে অন্তর্নিহিত।

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