Codegolf — Напишите Машину Для Получения Синуса

  • Автор темы Mcsim2003
  • Обновлено
  • 22, Oct 2024
  • #1

Вызов

Ваша задача — написать программу, которая вычисляет следующую функцию:

f(x, t) = d^x / dt^x (sin t)

То есть x-я производная от sin t. Если вы не знакомы с исчислением, вот таблица производных функции синуса:

...

f(-1, t) = -cos t

f(0, t) = грех t

f(1, t) = cos t

f(2, t)= -sin t

...

Последовательность повторяет эти 4 функции.

Входы

Ваша программа должна принимать целое число, которое будет использоваться в качестве значения x в функции, и число с плавающей запятой, которое будет использоваться в качестве значения t в функции.

Ваша программа может использовать радианы или градусы для функции синуса.

Выход

Ваша программа должна вывести значение f(x, t) с учетом целого числа x и числа с плавающей запятой t.

Подсчет очков

Это , поэтому побеждает самый короткий ответ (в байтах).

#код-гольф #код-гольф #исчисление #тригонометрия

Mcsim2003


Рег
07 Apr, 2004

Тем
74

Постов
190

Баллов
580
  • 26, Oct 2024
  • #2

Питон, 42 байта

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 žq        # Push PI

*       # Multiply it with the first (implicit) input `t`

;      # Halve it

+     # Add the second (implicit) input `x`

Ž   # Take the Sine of that (and output it implicitly)
 

Использует тот факт, что дифференцирование сдвигает функцию на žq*;+Ž left.

 

Mihaljangync


Рег
01 Jun, 2014

Тем
60

Постов
175

Баллов
515
  • 26, Oct 2024
  • #3

На самом деле 5 байт.

PI()

Попробуйте онлайн

Принимает ввод как PI() .

Объяснение:

PI ||answer||

C (gcc), 30 байт

INPUT X,N?SIN(X+N*PI()/2) ||answer||

Хаскель, 16 байт

[x, t] call NAME_OF_COMPILED_FUNCTION

Определяет бинарный оператор params["x","y"];sin(x+pi/2*y) .

@(x,t)sin(t+x*pi/2)

Использует тот факт, что дифференцирование сдвигает функцию на > print(loadfile('sine.lua')(1,0)) 0.8414709848079 > print(loadfile('sine.lua')(math.pi,0)) 1.2246467991474e-16 > print(loadfile('sine.lua')(math.pi,1)) -1.0 > print(loadfile('sine.lua')(math.pi,2)) -2.4492935982947e-16 > print(loadfile('sine.lua')(math.pi,3)) 1.0 left.

Сделать это без очков было дольше (занимает x,n=...return math.sin(x+math.pi/2*n) ):

f=x=>t=>Math.sin(t+Math.PI/2*x) f(x)(t) ||answer||

Выпуклый (только версия IDE), 6 байт

x=>t=>Math.sin(t+Math.PI/2*x)

Попробуйте онлайн!

После дальнейшего расследования с помощью Денниса в чате было обнаружено, что версия Convex для командной строки (то, что использует TIO) содержит ошибку, которая нарушает код (ссылка выше содержит обходной путь). Однако версия Convex для IDE, доступная на GitHub до публикации задания, не содержит этой ошибки. Вот ссылка на версию IDE, которая была доступна до публикации задания: Выпуклая IDE.

 

Morpheus0190


Рег
23 Jun, 2006

Тем
78

Постов
180

Баллов
590
  • 26, Oct 2024
  • #4

Математика 14 байт

С помощью Мартина Эндера,

M_PI ||answer||

Дж, 17 байт

#import<math.h> #define f(x,n)sin(x+M_PI/2*n)

Вычисляет (x%4)-ю производную синуса, а затем применяет ее к правому аргументу.

Использование:

function(t,x)sin(t+pi/2*x)

где x\t=x*π/2+t|>sin is STDIN and << это стандартный вывод.

 

Andrew.il


Рег
05 Dec, 2008

Тем
64

Постов
230

Баллов
560
  • 26, Oct 2024
  • #6

Р, 26 байт

>> f =: 4 :'1&o.d.(4|x)y' >> _1 0 1 2 3 (f"0 0) 0 << _1 0 1 0 _1

Именно то, что написано на банке...

 

Parallaks


Рег
26 Jan, 2006

Тем
73

Постов
227

Баллов
632
  • 26, Oct 2024
  • #7

С (ГЦК), 53 46 45 байт

4 :'1&o.d.(4|x)y'

Вероятно, у Ideone нет glibc, говорит Sin[#2+Pi/2#]& is undeclared.

 

HokeJeabe


Рег
26 Apr, 2014

Тем
60

Постов
213

Баллов
543
  • 26, Oct 2024
  • #8

JavaScript (ES6), 29 байт

P½*+ms

Использование:

(sin.).(+).(pi/2*) ||answer||

Lua 5.x, 37 байт

n x

использование:

pi/2 ||answer||

Матлаб, 19 байт

λ 2.0 % (-3) -0.4161468365471426 ||answer||

ПКФ, 29 байт

Использование формата «файл как функция»:

%

Позвонить как x%n=sin$x+pi/2*n

 

Forrestyle


Рег
10 Sep, 2011

Тем
72

Постов
179

Баллов
559
  • 26, Oct 2024
  • #9

SmileBASIC, 25 байт

#define f(x,n)sin(x+n*acos(0))

Вероятно, короче на каком-то диалекте BASIC, где есть константа с именем ╦*½+S ╦* pi*n ½ half that + add t S sine rather than t\nx . (Да, ╦*½+S is not actually a function, those parentheses are a lie.)

 

Yury Arkesau


Рег
24 Oct, 2020

Тем
70

Постов
199

Баллов
559
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно