आउटपुट एक निश्चित आवृत्ति की ध्वनि है


25

यह एक सरल चुनौती है, लेकिन मुझे ऐसा कोई सवाल नहीं मिला, जो वास्तव में इसके समान था। चुनौती STDIN या समकक्ष का उपयोग करने में एक आवृत्ति लेने की है, और फिर 5 सेकंड के लिए Hz में, उस आवृत्ति से मेल खाने वाले टोन को आउटपुट करता है। उदाहरण के लिए

Input: 400
Output: (a tone of 400 Hz with a duration of 5 seconds)

नियम

  • इनपुट STDIN, या आपकी भाषा के समकक्ष के माध्यम से लिया जाना चाहिए
  • जवाब एक पूर्ण कार्यक्रम होना चाहिए
  • बिलिन का उपयोग किया जा सकता है
  • आवृत्ति 50 - 5000 हर्ट्ज से कहीं भी होगी
  • आउटपुट 5 सेकंड के लिए खेला जाना चाहिए
  • आउटपुट साइन लहर के रूप में होना चाहिए

परीक्षण के मामलों

इनपुट: 440

आउटपुट:

इनपुट: 200

आउटपुट:

इनपुट: 4000

आउटपुट:


  • यह इसके लिए सबसे छोटे समाधान के साथ भाषा खोजने के बारे में नहीं है (कुछ ऐसे हैं जहां खाली कार्यक्रम चाल करता है) - यह हर भाषा में सबसे छोटा समाधान खोजने के बारे में है । इसलिए, कोई जवाब स्वीकार के रूप में चिह्नित नहीं किया जाएगा।

  • हमारे सामान्य नियमों के विपरीत, एक भाषा (या भाषा संस्करण) का उपयोग करने के लिए स्वतंत्र महसूस करें, भले ही यह इस चुनौती से नया हो। विशेष रूप से इस चुनौती का 0-बाइट जवाब प्रस्तुत करने के लिए लिखी जाने वाली भाषाएं निष्पक्ष खेल हैं, लेकिन विशेष रूप से दिलचस्प नहीं हैं।

    ध्यान दें कि एक दुभाषिया होना चाहिए ताकि सबमिशन का परीक्षण किया जा सके। यह अनुमति दी जाती है (और यहां तक ​​कि प्रोत्साहित किया जाता है) कि इस दुभाषिया को पहले से बिना पढ़ी हुई भाषा के लिए स्वयं लिखें।

    इसके अलावा कि भाषाओं ध्यान दें करते fullfil करने के लिए है भाषाओं प्रोग्रामिंग के लिए हमारी सामान्य मापदंड


सूची

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


क्या कोई कार्य स्वीकार्य होगा?
एक स्पेगेटो

@quartata यह एक पूर्ण कार्यक्रम होना चाहिए।
क्रिस लूनम

2
मैं देखता हूं कि बहुत सारे लोग एक beep()फ़ंक्शन का उपयोग कर रहे हैं । क्या यह गारंटी है कि एक साइन लहर है?
जिओवेल

2
विंडोज की System.Console.Beepचीज मेरी (आधुनिक, विंडोज 10) मशीन पर साइन लहर है, इसलिए मुझे लगता है कि मायने रखता है। PPCG पर समाधान आमतौर पर पोर्टेबल होने की जरूरत नहीं है।
लिन

क्या एक ऑडियो फ़ाइल को "एक टोन आउटपुट" करने का एक वैध तरीका है?
इल्मरी करोनन

जवाबों:


13

QBasic, 18 बाइट्स (अयोग्य)

जैसे @pabouk का उल्लेख किया गया है, यह पीसी स्पीकर का उपयोग करता है, इसलिए यह एक वर्ग तरंग बजाता है , न कि साइन लहर जैसा कि समस्या पूछती है। ( इस उत्तर को पोस्ट किए जाने के बाद इस समस्या को जोड़ दिया गया था, इसलिए वोट।) मैं इसे यहाँ पोस्टरिटी के लिए वैसे भी छोड़ दूँगा।


INPUT F
SOUND F,91

91 टिक्स के लिए इनपुट की गई आवृत्ति पर एक ध्वनि चलाएं , जो 5 सेकंड के बराबर है।


यह कार्यक्रम अंतिम आवश्यकता को पूरा नहीं करता है: "आउटपुट साइन लहर के रूप में होना चाहिए"। SOUNDकमांड पीसी स्पीकर का उपयोग करता है जिसे डिज़ाइन किया गया था जिसे टाइमर चिप 8254 द्वारा संचालित किया गया था जो एक चौकोर तरंग पैदा करता है। --- हालांकि आधुनिक पीसी में 8254 गायब हो सकता है SOUNDकमांड का सही अनुकरण एक वर्ग तरंग का उत्पादन करना चाहिए।
पाबूक

3
मेरे उत्तर पोस्ट करने के बाद यह आवश्यकता जोड़ी गई थी। : / मैं एक नोट जोड़ूंगा, लेकिन मुझे यह उत्तर हटाने के बारे में अजीब लगता है जब यह शीर्ष पर मतदान होता है।
लिन

12

पायथन 2, 40 बाइट्स

from winsound import*
Beep(input(),5000)

केवल विंडोज पर काम करता है।


1
चाहेंगे 5e3काम करते हैं?
लिन

3
@ मौरिस नहीं, मैंने पहले ही कोशिश की थी लेकिन यह केवल पूर्णांक चाहता है।
orlp

10

गणितज्ञ, 42 बाइट्स

वैसे अगर हम बिल्ट-इन का उपयोग कर सकते हैं ...

Input[]
EmitSound@Play[Sin[2t%Pi],{t,0,5}]

एक पूर्ण कार्यक्रम की आवश्यकता के लिए धन्यवाद, यह पहली बार था जब मुझे दो बाइट्स को बचाने के लिए अपने हाल ही में खोजे गए गोल्फिंग टिप का उपयोग करना पड़ा %(अंतिम मूल्यांकन का परिणाम)।

Mathematica में एक अंतर्निहित भी होता है, Soundजिसमें एक पिच और तर्क के रूप में एक अवधि होती है, लेकिन दुर्भाग्य से पिच को एक संगीत नोट के रूप में दिया जाना है। अपनी स्वयं की ध्वनि तरंग को निर्दिष्ट करना Playआवृत्ति के साथ काम करने का एकमात्र तरीका प्रतीत होता है।



7

MATLAB, 36 बाइट्स

sound(sin(pi*input('')*(0:8^-4:10)))

दो बाइट बचाने के लिए दोष के लिए धन्यवाद ।


2
आप 2^-12इसके बजाय का उपयोग करके एक चरित्र को बचा सकते हैं 1/4096
दोषपूर्ण

ओह मुझे मूर्ख, 8^-4और भी छोटा है!
at


4

FakeASM , 12 बाइट्स

RDA
BEEP 5e3

विंडोज संदर्भ कार्यान्वयन (डाउनलोड) के साथ काम करता है । यह विंडोज के Beepफ़ंक्शन को कॉल करता है, जो आधुनिक प्लेटफार्मों पर साइन लहर है।


STDIN कहाँ है?
बिल्ली

1
RDASTDIN से एक नंबर पढ़ता है और इसे रजिस्टर में डालता है A
लिन

मैंने युक्ति पढ़कर नोट किया कि मैं अपनी टिप्पणी हटाना भूल गया। धन्यवाद, हालांकि
बिल्ली

4

बैश + X11, 27 20 बाइट्स

xset b 9 $1 5;echo 

इसमें एक अप्राप्य है, इसलिए यहां एक हेक्सडंप है:

0000000: 7873 6574 2062 2039 2024 3120 353b 6563  xset b 9 $1 5;ec
0000010: 686f 2007                                ho .

यह आवृत्ति को कमांड-लाइन तर्क के रूप में लेता है और 9% की मात्रा में उपयुक्त बीप खेलता है (क्योंकि कोई वॉल्यूम निर्दिष्ट नहीं किया गया था)।

(नोट: मैं अपने कंप्यूटर के साथ कुछ मुद्दों के कारण इसका परीक्षण करने में असमर्थ था, लेकिन मुझे यकीन है कि यह 99% काम करता है।)


वहाँ एक \ x07 है?
डॉक्टर

नहीं, xset सभी बीपिंग सामान करता है।
एक स्पेगेटो

@ TheDoctor ओह मैं देख रहा हूं कि आपका क्या मतलब है ... वास्तविक शोर करने के लिए इसे \ x07 की आवश्यकता है। फिक्सिंग।
एक स्पेगेटी

echo <BEL>जहां <BEL>वास्तविक चरित्र है, 6 बाइट्स बचाता है।
डेनिस

@ डेनिस डी'हो। धन्यवाद!
एक स्पेगेटी

4

जावास्क्रिप्ट, 114 बाइट्स

p=prompt();c=new AudioContext;with(c.createOscillator()){frequency.value=p;connect(c.destination);start();stop(5)}

कुछ अत्याधुनिक ब्राउज़र की आवश्यकता है, प्रॉम्प्ट में आवृत्ति दर्ज करें। JSFiddle


यह 5 सेकंड के लिए नहीं चलेगा क्योंकि prompt()ऑडियो टाइमर चालू होने के बाद कहा जाता है new AudioContext()। मेरा मानना ​​है कि सबसे कम आप 115 बाइट्स के साथ प्राप्त कर सकते हैं c=new AudioContext(p=prompt());with(c.createOscillator()){frequency.value=p;connect(c.destination);start();stop(5)}
user81655

सिर के लिए धन्यवाद, मैं 'के साथ' का उपयोग करने के विचार की सराहना करता हूं।
निकसन

मैंने पहले <script>पूर्ण कार्यक्रम पर विचार करने के लिए जावास्क्रिप्ट के लिए आवश्यक टैग नहीं देखे हैं । मुझे लगता है कि आप 114 के लिए अच्छे हैं। इसके अलावा, pअसाइनमेंट को हटा दें , और बस सेटिंग frequency.value=prompt()आपको 110 पर ले जानी चाहिए।
Mwr247

@ Mwr247 दुर्भाग्य से, जैसा कि user81655 ने बताया, टाइमर जो निर्धारित करता है कि ऑडियो बंद हो जाता है जब AudioContext बनाया जाता है। इसके बाद प्रॉम्प्ट पहले प्रकट करना पड़ता है, या एक धीमी इनपुट के कारण ऑडियो या ऑडियो कम हो सकता है।
निकसन

p=prompt();with(new AudioContext)with(createOscillator())frequency.value=p,connect(destination),start(),stop(5)यह 3 बाइट्स बचाता है
पैट्रिक रॉबर्ट्स

4

बैश + लिनक्स के बर्तन, 95

bc -l<<<"obase=16;for(;t<5;t+=1/8000){a=s($1*t*6.3);scale=0;a*30/1+99;scale=9}"|xxd -p -r|aplay

यह एक सच्ची साइन लहर है। कोई बीप नहीं करता। इनपुट आवृत्ति कमांड-लाइन के माध्यम से दर्ज की गई है:

./hz.sh 440

3

प्रसंस्करण, 148 114 106 बाइट्स

import processing.sound.*;
Engine.start().sinePlay(int(loadStrings("s")[0]),1,0,0,0);delay(5000);exit();

(किसी कारण से प्रोसेसिंग के लिए आयात स्टेटमेंट और नई लाइन दोनों का उपयोग करना पड़ता है, अन्यथा यह लाइब्रेरी को मान्यता नहीं देता है।)

मुझे अभी भी पता नहीं चला है कि प्रोसेसिंग में तर्कों को कैसे पारित किया जाता है, हालांकि मुझे पता है कि यह संभव है, इसलिए इस कोड को स्केच फ़ोल्डर में "s" नामक एक फ़ाइल की आवश्यकता होती है जिसमें आवृत्ति मूल्य होता है। अगर मैं यह पता लगा सकूं कि मैं तर्कों को कैसे पारित कर सकता हूं तो मैं फ़ाइल लोडिंग को बदल सकता हूं args[0]


3

VB.net, 90 बाइट्स , 74 बाइट्स

Module m
Sub Main(a() as String)
Console.Beep(a(0),5000)
End Sub
End Module

सेहंसुख्त को धन्यवाद

Module m
Sub Main()
Console.Beep(My.Application.CommandLineArgs.First,5000)
End Sub
End Module

यह मेरी पहली पोस्ट है इसलिए अगर मैंने कोई भी बात गलत की तो कृपया मुझे बताएं


1
इसके बजाय मुख्य आर्गों में कमांड लाइन तर्क प्राप्त करना कम किया जा सकता है Main(a()As Stringऔर बाइट काउंटर केBeep(a(0),5000) अनुसार कुल 74 बाइट्स को कम किया जा सकता है
सेहंसुच्त

2

टर्बो / बोरलैंड / नि: शुल्क / GNU पास्कल, 95 बाइट्स

टर्बो / बोरलैंड पास्कल को चलाने के लिए आधुनिक कंप्यूटरों पर देरी से कार्य करने के मुद्दों के कारण (अच्छी तरह से, 200Mhz से अधिक तेज), यह 5 सेकंड तक इंतजार नहीं कर सकता है, यहां तक ​​कि एक पैचेड सीआरटी पुस्तकालय के साथ भी

Program a;Uses crt;Var i,k:Integer;BEGIN Val(ParamStr(1),i,k);Sound(i);Delay(5000);NoSound;END.

स्ट्रिंग टू इंटर्गर रूपांतरण को कम (77 बाइट्स) फ़्री पास्कल पर किया जा सकता है, और आधुनिक व्युत्पन्न होते हैं, क्योंकि उनके पास StrToIntफ़ंक्शन है:

Program a;Uses crt;BEGIN Sound(StrToInt(ParamStr(1)));Delay(5000);NoSound;END.

1
जहाँ तक मुझे पता है, एक पास्कल प्रोग्राम बिना Program a;भाग के भी सभी कंपाइलरों के साथ ठीक काम करेगा , इसलिए आप इसे छोड़ कर 10 बाइट जीत सकते हैं।
vsz

@vsz FPC ठीक हो सकती है (इसलिए मैं दूसरे स्निपेट से इसे हटा सकता हूं), मुझे अभी भी कुछ प्राचीन लोगों की जांच करनी है, जैसे कि TP5.5, जहां तक ​​मुझे याद है कि उन्हें इसकी आवश्यकता थी।
सेतुप्यि

आवश्यकताओं का कहना है कि "इनपुट को ParamStr()Read()
एसटीडीआईएन के

2

पर्ल, 27 बाइट्स

मूल रूप से पायथन उत्तर का एक पर्ल संस्करण (केवल विंडोज पर भी काम करता है), यदि हम मॉड्यूल की अनुमति दे रहे हैं।

use Audio::Beep;beep<>,5000

2

विट्सी + एक्स 11, 20 बाइट्स

"5 "WX" 9 b tesx",7O

मेरे बैश जवाब का अनुवाद। ऑनलाइन दुभाषिया (स्पष्ट रूप से) में काम नहीं करता है।

आवृत्ति के बाद किसी भी गैर-संख्यात्मक चरित्र के रूप में इनपुट लेता है (इसलिए 440 हर्ट्ज के इनपुट के लिए आप "a440" कर सकते हैं)।

व्याख्या

"5 "WX" 9 b tesx",7O
"5 "                   Push " 5"
    WX                 Reads input and removes the first character (which is used to force string context)
      " 9 b tesx"      Push "xset b 9 "
                 ,     Pop everything and execute as a shell command.
                  7O   Output bell char.

अच्छा जवाब। अच्छा काम।
17

आपने विटसी का इस्तेमाल किया। <3 मेरे बच्चे को छुड़ाया गया है।
Addison Crump

1

C, WinAPI के साथ, 82 बाइट्स

#include<windows.h>
#include<stdio.h>
main(){int x;scanf("%i",&x);Beep(x,5000);}

WinAPI बीप () फ़ंक्शन का उपयोग करता है।


क्या आपको पास &xहोने की आवश्यकता नहीं है scanf? इसके अलावा, आप xएक पैरामीटर को मुख्य के रूप में घोषित कर सकते हैं और संकलक को उसके प्रकार को डिफ़ॉल्ट कर सकते हैं।
नील

@ नहीं, मुझे नहीं पता कि मैंने इसे पास किए बिना कैसे गलत &xकिया scanf()। अब निश्चित हो गया; धन्यवाद।
14:20 पर user2064000


0

Shadertoy GLSL साउंड शेडर, 86

#define F 440.0
vec2 mainSound(float t){return vec2(sin(6.3*F*t)*(t<5.0?1.0:0.0));}

"इनपुट" के माध्यम से दिया गया है #defineFHz की अनुमानित आवृत्ति के साथ एक साइनवेव आउटपुट करता है । "डिफ़ॉल्ट" 6.2831 के बजाय 2 * Pi से 6.3 तक गोल, लेकिन बहुत समान लगता है।

अफसोस की बात है कि यहाँ गोल्फ के लिए बहुत कुछ नहीं है।


इनपुट को STDIN के माध्यम से लिया जाना चाहिए, हार्डकोड नहीं किया जाना चाहिए।
त्रुटिपूर्ण

@flawr I Shadertoy पर सटीक इनपुट के किसी भी तरीके को नहीं जानता है। कृपया मुझे ज्ञान दो।
क्रोल्टन

यह आपका काम होना चाहिए , मेरा नहीं। लेकिन मैं वैसे भी Shadertoy नहीं जानता, इसलिए मैं आपकी मदद नहीं कर सकता।
दोपहर

@flawr उचित परिशुद्धता की एकमात्र विधि कर्सर स्थिति होगी, लेकिन यह केवल छवि शेड्स के लिए उपलब्ध है, ध्वनि शेडर्स नहीं। तो मैं बहुत ज्यादा परिभाषित के साथ फंस गया हूँ।
क्रोल्टन

क्या आप फ़ाइलें लोड कर सकते हैं? वही मैंने किया।
जियोकॉवेल

0

जोल्फ, 4 बाइट्स, नॉनकोमेटिंग

यह भाषा जोड़ चुनौती के बाद आई।

Αc5j
Αc     create a beep
  5     five seconds long
   j    with the input as a frequency

डिफ़ॉल्ट लहर एक साइन लहर है।


0

स्माइलबासिक, 84 बाइट्स

INPUT F
N=LOG(F/440,POW(2,1/12))+57BGMPLAY FORMAT$("@D%D@255T12N%D",(N-(N<<0))*63,N)

हर्ट्ज से आधे चरणों तक परिवर्तित करता है, और आवृत्ति का उत्पादन करने के लिए एक निश्चित मूल्य के साथ एक निश्चित नोट निभाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.