2016 년 새해 복 많이 받으세요!


40

입력 한 값은 1 년을 나타내는 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)

STDIN에서 입력을 읽거나 명령 행 인수를 허용하는 프로그램 또는 인수를 취하는 함수를 작성하십시오.

참고 : 가능하면 코드를 테스트 할 수있는 링크를 추가하십시오.

리더 보드 :


6
나는 모든 단일 날짜 도전이 하위 문제로 윤년 계산을 수행해야한다고 생각하며 부실합니다.
xnor


@xnor 만약 그렇지 않다면 +7 일 것입니다. 즉 "너무 넓다"
에릭 아웃 골퍼

@EriktheGolfer 아니오. 그 의견을 썼을 때 제 대답은 받아 들여졌습니다.
Dennis

답변:


1

젤리, 9 바이트

%4*3%7+5+

이것은 정수 명령 행 인수를 입력으로받는 모나 딕 체인입니다. 내 (x+5+(x%4)**3%7)알고리즘을 사용 합니다.

여기서 사용해보십시오 . 현재 Jelly 버전이지만 이 버전 에서도 작동 하므로 문제가 해결됩니다. (감사합니다 @Dennis!)


이것은 놀랍다! 이 버전 이 젤리 통역사의 개정판 과 함께 작동한다는 것을 확인할 수 있습니다 .
Dennis

31

Mathematica, 45 37 27 24 바이트

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

@ MartinBüttner (10 바이트) 및 @ChipHurst (추가 3 바이트) 덕분에 개선되었습니다.


7
오 와우. 아무도이 패턴을 눈치 채지 못한 것 같지만 잘 작동합니다.
Lynn

4
다음은 약간 더 짧은 버전입니다.#+5[6,6,11][[#~Mod~4]]&
Chip Hurst

@ChipHurst 매우 영리한 5[6, 6, 11][[0]]:)
martin

18

CJam, 21 12 11 바이트

{_9587Cb=+}

@martin은 매우 간단한 방법을 찾았습니다!

여기서 사용해보십시오 .

편집 : 감사합니다, 데니스!


1
@Mauris 설명을 추가 할 수 있습니까?
Vasu Adari

@Vasu :이 코드는 5 6 6 11다른 답변에 사용 된 것과 동일한 트릭 을 구현하는 익명 함수 이지만 목록은 "기본 12의 9587 자리" 로 인코딩됩니다 .
Lynn

고마워 귀하의 답변을 확인하는 사람들이 언어가 어떻게 작동하는지 이해할 수 있도록 설명을 추가하고 싶었습니다.
Vasu Adari

10

gs2, 12 바이트

V@¶4☻s%☺♀i50

내 CJam 답변의 번역. 평소와 같이 CP437로 인코딩됩니다. 온라인으로 사용해보십시오 !


이 링크는 2spooky4me를 생성하는 코드로 연결되며 위의 코드를 잘라 붙여 넣으면 잘못된 연도를 얻습니다. imgur.com/VAkXT0k ( "잘못된 연도"에 따라 의도 된 연도보다 1 년 더 일찍 도착 함)
question_asker

나는 바이트를 잊었다. 지금 시도하십시오.
Lynn

링크도 편집했습니다.
Lynn

쿨, 그것은 지금 작동
question_asker

8

자바 스크립트 (ES6), 50 49 20 바이트 (보너스 없음)

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

@martin의 알고리즘은 훨씬 작습니다. 그래서 함께했습니다.

JavaScript가 장황한 경향이 있기 때문에 수학적 접근 방식을 선택했습니다. 코드는 짧아 보너스가 더 길어질 수 있습니다.

다음은 이전 답변 (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

Pyth, 14 12 11 바이트

+QC@"♣♠♠♂"Q

문자열의 4 바이트는이어야합니다 05 06 06 0B.

편집 : 감사합니다, FryAmTheEggman!

편집 : 감사합니다, 데니스!


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

Z80 기계 코드, 12 바이트

0000h에 입력 될 때 호출 되는 Z80 프로 시저 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      ;

처음 세 명령어는 "NOP"이지만 나중에 코드에서 데이터로 색인됩니다. 돌아 오면 출력은입니다 HL.


네, 게시물에 추가했습니다.
Lynn

2097 년과 2098 년에는 각각 7과 12를 더해야합니다.
Toby Speight

1
OP는 입력 연도가 1970-2090 년 범위에 있다고 보장했다.
Lynn

6
나는 대답 한 후에 바뀌는 질문을 정말로 좋아하지 않습니다!
Toby Speight

2
입력이 있음을 지정할 DE수 있으므로 사용할 수 LD A, 3; AND E; LD L, A; LD L, (HL);있습니까?
Neil

5

파이썬 3 140 100 102 84.5 154 * 0.5 = 77 바이트

아마도 Sakamoto의 알고리즘으로 더 나은 솔루션을 작성할 수는 있지만 지금은 그렇게 할 것입니다.

내가 맞았 어. 다음은 Sakamoto의 알고리즘을 사용한 구현입니다.

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

질문을 업데이트했습니다. 세기를 확인할 필요가 없습니다.
Vasu Adari

1
어때요 w="SMTWTFSuouehranneduit"그리고 인쇄 w[d(i)::7]?
Lynn

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

C, 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

R, 143136 * 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 대신에 종일 이름으로 사용하십시오 . 원하는 상태에 따라 다릅니다.

R, 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])

R, 90 바이트

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

위의 모든 답변은 @plannapus 답변을 기반으로 한 파생 작업입니다. ;구분 기호를 사용하여 source파일이 필요하지 않도록 하거나 명령 줄에서 스크립트로 실행하십시오.


1
+1 완전히 잊어 버렸습니다 weekdays.
plannapus

@plannapus Thanks :) (개행을 계산하고 실제로 파일 시스템에 물었습니다 .Windows에서 2 바이트이지만 POSIX 파일에 있어야 할 줄 바꿈이 없으므로 다음과 같이 유지하십시오. 실제로)
Tensibai

3

R, 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)"

R, 97 바이트 (보너스 제외)

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

나는 하나의 못생긴 줄을 타고 싶다는 소망을 이해하지 못합니다. 캐리지 리턴은 가장 비싸지 않습니다 ;...
Tensibai

첫 번째 문자를 제거하고 I thinky=scan;x=y<-scan()+1
Tensibai를

as.POSIXlt(paste(y,1),,"%Y %j")$wday함수 본문 으로 사용하여 7을 더 절약 할 수 있습니다.
Tensibai

@ Tensibai 한 줄에 넣지 않고 콘솔에 직접 붙여 넣으면 scan두 번째 줄에서 입력으로 읽습니다. 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.
plannapus

@Tensibai 마지막 조언은 결과 ...$wday가 평일 번호입니다. 그러나 여기서는 인쇄 할 수 있도록 요일 이름이 필요합니다Advance Happy New Year, 2012 (Sun)
plannapus

3

VBA, 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

VBA를 사용하면 요일을 쉽게 찾을 수 있습니다.


3

PHP, 120139 바이트-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

OOP 방식은 항상 (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 바이트를 절약했습니다 . PHP 수정자를 사용하여 1 년을 추가하는 대신 +1year이제 주어진 연도를 간단히 증가시킵니다.
  • 저장된 1 바이트를 저장하여 -1-1가변한다.

3

C, 점수 53 52 (104 바이트)

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

Toby Speight 에서 빌린 아이디어 ; 평일의 보너스 표시를 추가했습니다.

문자 코드를보다 편안한 범위로 이동하여 문자열을 줄였습니다. 짧은 평일 계산 코드가 x*5/4%7작동 하도록 올바른 이동량 (예 : 43)을 선택해야 합니다.


문자 코드로 이것을 ASCII 호환 인코딩으로 제한한다고 생각합니까?
Toby Speight

예. 코드는 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

Pyth, 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"";}}

어.

언 골프 드 :

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"";
    }
}

온라인으로 사용해보십시오!

내가 함께 단축 할 수 있음을 지적 @Kenney에게 감사 new Long하고 printf! :디


long y=new Long(a[0])6 (12) 바이트를 printf저장 하고를 사용 하면 다른 3 (6) 을 저장합니다.
Kenney

2

GNU 코어 유틸리티, 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

입력은 명령 행 인수에서오고 출력은 stdout입니다.

설명

# 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

MATL , 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

펄 6 ,  70   23 바이트

{($^a+1...{[==] ($a,$_).map: {Date.new(:year($_)).day-of-week}})[*-1]} # 70 bytes

{($_ X+5,6,6,11)[$_%4]} # 23 bytes

용법:

for «2001 2047 2014 1970 1971 1977 2006 2010» {
  printf "%d => %d\n", $_, {($_ X+5,6,6,11)[$_%4]}( $_ )
}
2001 => 2007
2047 => 2058
2014 => 2020
1970 => 1976
1971 => 1982
1977 => 1983
2006 => 2012
2010 => 2016


2

apt, 12 바이트

U+"♣♠♠♂"cU%4

Pyth 응답과 마찬가지로 문자열의 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
현상금의이 크리스마스 선물에 감사드립니다! 그러나 누군가 내가 어떻게 그것을 얻었는지 말해 줄 수 있습니까?
ETHproductions

나는 역사를 살펴 보았다. OP가 현상금을 지급하려고했지만 현상금을 수여하는 것을 잊었 기 때문에 Community는이 답변에 명성의 절반을 넘기기로 결정했습니다.



1

C # (6.0) .Net Framework 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

JS를 사용한 것은 이번이 처음입니다. 나는 이것을 파이썬 스크립트를 사용하여 발견했으며 그것이 최적이라고 생각합니다. 때문에 작동 0**30 모드 7, 1**3그리고 2**3모두 1이고, 3**36입니다.


1
하지 않 지수화 운영자 **ES7의 기능은? 아니면 Babel 을 사용하고 있습니까?
insertusernamehere 여기에

@insertusername 여기에서 수정되었습니다.
lirtosiast

1

파이썬, 23 바이트

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

내 JavaScript 답변의 포트.


1

Pyth , 12 바이트

++5%^%Q4 3 7

온라인으로 사용해보십시오! 또는 테스트 스위트를 확인하십시오.

Pyth , 18 바이트

이 두 번째 접근법은 주로 @ wizzwizz4의 Pyth answer의 골프입니다 .

J%Q4+?q3J11?qJZ5 6

온라인으로 사용해보십시오! 또는 테스트 스위트를 확인하십시오.


설명

++ 5 % ^ % Q4 3 7Q-Q는 평가 된 입력을 의미하며 끝에 암시 적입니다.

     % Q4-입력 모드 4.
    ^ 3-입방체.
   % 7-모드 7.
 +5-플러스 5
+ Q-입력을 더합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.