दो संख्याओं का गुणा करें


21

इनपुट: दो दशमलव पूर्णांक। इन्हें प्रोग्राम या फ़ंक्शन के तर्क के रूप में या सूची के रूप में मानक इनपुट में कोड को दिया जा सकता है।

आउटपुट: उनका उत्पाद, एक दशमलव पूर्णांक के रूप में। उदाहरण के लिए, इनपुट 5 16आउटपुट पर ले जाएगा 80

प्रतिबंध: कोई मानक खामियों कृपया। यह , सबसे कम मात्रा में बाइट्स जीतता है।

नोट: मेरी पूर्व चुनौती से चुराया गया लेआउट, दो नंबर जोड़ें

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

1 2   -> 2
4 5   -> 20
7 9   -> 63
-2 8  -> -16
8 -9  -> -72
-8 -9 -> 72
0 8   -> 0
0 -8  -> 0
8 0   -> 0
-8 0  -> 0
0 0   -> 0

या सीएसवी के रूप में:

a,b,c
1,2,2
4,5,20
7,9,63
-2,8,-16
8,-9,-72
-8,-9,72
0,8,0
0,-8,0
8,0,0
-8,0,0
0,0,0

लीडरबोर्ड


4
@ फ़्लिपटैक यह जोड़ और गुणा करना किसी भी भाषा में उतना आसान है, जो मुझे नहीं पता कि क्या यह वास्तव में सच है।
घातक

16
मुझे नहीं लगता कि "दो नंबर जोड़ने" की अनुमति देना उचित है, लेकिन इसे बंद करें। भले ही यह अधिकांश प्रोग्रामिंग भाषाओं में बहुत ही मामूली है, फिर भी यह एक वैध चुनौती है। यदि यह बहुत व्यापक है, तो "दो नंबर जोड़ें" चुनौती भी व्यापक होनी चाहिए।
मेगो

32
यदि वे उन्हें पसंद नहीं करते हैं, तो कोई भी तुच्छ चुनौतियों का सामना करने के लिए स्वतंत्र है, लेकिन यह पूरी तरह से वैध और ऑन-टॉपिक चुनौती है और यह कहीं भी "बहुत व्यापक" (यदि कुछ भी हो, तो आप एक तुच्छ चुनौती को बहुत संकीर्ण कह सकते हैं)। मैं इसे फिर से खोल रहा हूं। उस ने कहा, अगर किसी को लगता है कि तुच्छ चुनौतियां उनकी बुद्धिमत्ता का अपमान करती हैं, तो मैं उन्हें उन भाषाओं की तलाश करने के लिए प्रोत्साहित करता हूं जो कार्य को कम तुच्छ बनाते हैं।
मार्टिन एंडर

16
Uo अगला: दो नंबर घटाएँ!

7
@ कोई बैरल-बचे हुए को खाली नहीं छोड़ रहा है, एह?
गैरेथ

जवाबों:


39

Brachylog V1, 05AB1E, J, K, Underload, MATL, Forth, PigeonScript, Stacked, Implicit, Jolf, Clojure, Braingolf, 8th, Common Lisp, Julia, Pyt, Appleseed, Stax, Reality, dc 1 byte

*

आप अन्य भाषाओं को जोड़ने के लिए इस उत्तर को संपादित कर सकते हैं जिसके *लिए एक वैध उत्तर है।


पॉलीगॉट, 05AB1E और 5 अन्य भाषाओं की तरह।
जादू ऑक्टोपस कलश

13
मैंने इसमें अंडरलोड को संपादित किया। यह संभवतः इनमें से सबसे दिलचस्प है, क्योंकि अंडरलोड में घटाव, विभाजन या इसके अलावा करने की 1 बाइट विधि नहीं है।

यहाँ एक और है: codegolf.stackexchange.com/a/106187/62257
गाय का

यह पायथ में मान्य नहीं है। अजगर इस तरह निहित इनपुट नहीं लेता है।
isaacg

जोड़ा गया जूलिया, उदा*(5,16)
ggg

32

सी (जीसीसी), 13 बाइट्स

सभी कार्यान्वयन पर काम नहीं करता है , लेकिन यह ठीक है।

f(a,b){a*=b;}

यह TIO पर कोशिश करो!


6
रुको, यह किसी भी तरह से लौटने वाला है a? मुझे यह नहीं मिला ...
एर्गेल्फ़र

2
यह कैसे उपयोगी होगा, इसका स्पष्टीकरण। ( aएक स्थानीय स्टैक चर है f()- इसका मान क्यों लौटाया गया है?)। +1, btw - एबीआई का बहुत चालाक दुरुपयोग।
डिजिटल ट्रामा

6
@EriktheOutgolfer returnकीवर्ड केवल EAX रजिस्टर में इसके तर्क का स्थान रखता है। इस मामले में, उत्पन्न निष्पादन योग्य a*bउस रजिस्टर में गणना returnकरता है , इसलिए कुछ भी नहीं करता है।
डेनिस

7
अरे, यह मेरी चाल थी! codegolf.stackexchange.com/a/106067/18535 :-)
जीबी

12
एक बार के लिए शीर्ष पर सी देखने के लिए खुश! आप वास्तव में केवल f(a,b){a*=b;}भाग को 1##&बदलकर और फिर अपनी भाषा को Mathematica में बदलकर लगभग 9 बाइट्स से दाढ़ी बना सकते हैं ।
अल्बर्ट रेनशॉ

21

बीटनिक , 888 बाइट्स

k I
j k ZZZZX z
xw k C vp yQ KD xw z j k ZZZZX z
j k ZZZD z xw bZ ZX
k XX z qs xw vp xw xw vp xw vp vp vp k I Xj ZZD hd
xw yQ K k ZZZZX xo exx
qs yQ XA xw xw xw xw z xw bZ K
xw xw k I
j k ZZZZX z
xw k C vp yQ XA hd k I z j k ZZZZX z
j xw k A vp bZ ZX
k ZZZZX z qs xw vp xw xw vp xw vp vp vp k I Xj ZZD hd
xw yQ K k ZZZZX xo exx
qs yQ F k ZZZZK xo
vp
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
qs z xw xw xw xw z qs
xw xw xw xw z qs k I qs k I z xw Xj ZC
qs bZ ZZZX qs xw yQ C hd xw
k I vp qs k I qs
xw Xj ZZC hd hd z Kz ZZD
k I z xw xw xw xw z qs k I qs k I Xj ZZZZF
z
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
z qs xw
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
z vp
xw xw z qs
xw xw z qs
k I qs
xw bZ ZZX k I z qs k I vp
xw k ZA z yQ ZA hd qs k I vp qs k I Xj ZZKD
qs xw Xj ZZK
hd qs xw Xj ZZZZ hd
k ZZZZKD vp xo xw Xj K

इसे ऑनलाइन आज़माएं!

मैं सी दुभाषिया का उपयोग कर रहा हूं क्योंकि टीआईओ पर पायथन दुभाषिया ने पते को निष्पादित किया है अगर बैकप जंपिंग के लिए शर्त पूरी नहीं हुई है। पाइथन इंटरप्रेटर के लिए एक आसान समाधान पता एनओपी बनाने के लिए कुछ नोड्स को पैड करना है। मेरा मानना ​​है कि न तो सही है:

                                   C       Python  My interpretation
IP after skiping N words           IP+N+1  IP+N+2  IP+N+2
IP after skiping back N words      IP-N    IP-N+1  IP-N+2
IP after not skiping N words       IP+2    IP+2    IP+2
IP after not skiping back N words  IP+2    IP+1    IP+2

इनपुट दो पूर्णांक होना चाहिए जो किसी स्थान से अलग हो, बिना नई रूपरेखा के अनुगामी हो।

यह उत्तर सभी पूर्णांकों के लिए सिद्धांत रूप में काम करता है, यदि प्रत्येक कोशिका एक मनमाने ढंग से बड़े मूल्य को स्टोर कर सकती है, केवल 0 - 255 तक सीमित नहीं है। लेकिन यह ओवरफ्लो होता है यदि | A | + | B | > 22. और यह बहुत धीमी गति से चलता है अगर | A | + | B | > 6. तो ऐसे कई मामले नहीं हैं जो आप वास्तव में परीक्षण कर सकते हैं और उन मामलों के लिए एक-और समाधान भी कम हो सकता है।

विचार त्रिकोणीय संख्याओं T (N) = N (N + 1) / 2 को 0 मान को घटाकर और सभी मध्यवर्ती मानों की गणना करने के लिए है। तब हम उत्तर प्राप्त कर सकते हैं ए * बी = टी (ए + बी) - टी (ए) - टी (बी)।

लेकिन सभी 3 मानों की गणना करना मुश्किल है। यह पहले T (A + B) की गणना करके करता है - A, बाद में वापस जोड़ने के लिए स्टैक में A की एक कॉपी छोड़कर, और इनपुट B का उपयोग करके। फिर पुनरावर्ती से सबसे बड़ी त्रिभुजाकार संख्या ज्ञात करें, जो T है ( शून्य विशेष मामलों को छोड़कर A + B-1)। हम वहां से B = T (A + B) - A - T (A + B-1) और कंप्यूट T (B) प्राप्त कर सकते हैं।

संख्या N एक त्रिकोणीय संख्या है यदि यह N से छोटी सबसे बड़ी त्रिकोणीय संख्या के बराबर है, साथ ही N से छोटी गैर-ऋणात्मक त्रिकोणीय संख्या है। यह O (2 ^ (T (A + B) -A) में चलती है। और कार्यक्रम का सबसे धीमा हिस्सा है।

k I                                         Push 1
j k ZZZZKAAA z                              Input and decrement by 48.
xw k AAA vp yQ (input_a_loop)               If the character was '-':
xw z j k ZZZZKAAA z                           Replace with 0 and input another.
input_a_loop:
j k ZZZAA z xw bZ (input_a_end)             Input and break if it is a space.
k ZKA z qs xw vp xw xw vp xw vp vp vp       Otherwise multiply the previous
                                              value by 10 and add.
k I Xj (input_a_loop)                       Continue the loop.
input_a_end: hd                             Discard the space.
xw yQ (check_sign) k ZZZZKAAA xo exx        If A=0, print 0 and exit.
                                            Stack: ?, A_is_positive, A
check_sign:
qs yQ (check_sign_else)                     If A is positive... or not,
xw xw xw xw z xw bZ (check_sign_end)          in either cases, push 2 copies
check_sign_else: xw xw k I                    of A and the negated flag back
check_sign_end:                               as a constant.
                                            Stack: A, A, A, A_is_negative
j k ZZZZKAAA z                              Similar for B.
xw k AAA vp yQ (input_b_loop)               If the character was '-':
hd k I z j k ZZZZKAAA z                       Decrement the flag and input another.
input_b_loop:
j xw k A vp bZ (input_b_end)                EOF is checked instead of a space.
k ZZZZKAAA z qs xw vp xw xw vp xw vp vp vp
k I Xj (input_b_loop)
input_b_end: hd
xw yQ (output_sign) k ZZZZKAAA xo exx       If B=0, print 0 and exit.
                                            Stack: A, A, A, A*B_is_negative, B
output_sign:
qs yQ (output_sign_end) k ZZZZK xo          If negative, output '-'.
output_sign_end:

vp                                          Add.        Stack: A, A, A+B
xw xw z qs                                  Insert a 0. Stack: A, A, 0, A+B.
xw bZ { xw k I z xw Xj }                    Copy and decrement while nonzero.
                                            Stack: A, A, 0, A+B, A+B-1, ..., 0
qs xw bZ { vp qs xw Xj } hd                 Add while the second value in the
                                              stack is nonzero.
                                            Stack: A, A, T(A+B)
qs z xw xw xw xw z qs                       Stack: A, C0=T(A+B)-A, C0, F0=0, C0

expand_loop:
xw xw xw xw z qs k I qs                     Stack: A, C0, C0, F0=0,
                                              ..., [P=C, P, S=0, F=1], C
dec_expand: k I z xw Xj (expand_loop)       Decrement and continue if nonzero.
                                            Stack: [P=1, P, S, F], C=0
                                            The last number 0 is assumed to
                                              be a triangular number.
test: qs bZ (extract_end)                   If F=0, break.
qs xw yQ (test_not_first) hd xw             If S=0, it's the first triangular
                                              number below previous C. Set S=C.
test_not_first: k I vp qs k I qs            S+=1 and restore F=1.
xw Xj (dec_expand)                          If C!=0, recursively expand from C-1.
hd hd z Kz (test)                           If S=P, P is a triangular number,
                                              return to the previous level.
k I z xw xw xw xw z qs k I qs               Otherwise, decrement P and try again.
k I Xj (dec_expand)
extract_end:                                Stack: A, C0, C0, T(A+B-1)

z                                           Subtract and get B.
xw xw z qs xw bZ { xw k I z xw Xj }         Computes T(B).
qs xw bZ { vp qs xw Xj } hd
                                            Stack: A, C0, T(B)
z qs xw                                     Stack: C0-T(B), A, A

xw xw z qs xw bZ { xw k I z xw Xj }         Computes T(A).
qs xw bZ { vp qs xw Xj } hd
z vp                                        Get A*B=(C0-T(B))+(A-T(A))
xw xw z qs                                  Stack: 0, X=A*B

divide: xw xw z qs                          Stack: 0, ..., Y=0, X
subtract: k I qs                            Stack: 0, ..., Y, Z=1, X
xw bZ {                                     While X!=0:
k I z qs k I vp                               X-=1, Z+=1.
xw k ZA z yQ (not_ten)                        But if Z=11:
hd qs k I vp qs k I Xj (subtract)               Y+=1, reset Z and restart the loop.
not_ten: qs xw Xj }
hd qs xw Xj (divide)                        Put Z under Y and make Y the new X,
                                              continue the loop if X!=0.
hd                                          Discard X.

print_loop:
k ZZZZKAA vp xo xw Xj (print_loop)          Add each cell by 47 and print.

ओह। बस ... वाह। मैंने इनाम रखा है, आप इसे 7 दिनों में प्राप्त कर लेंगे।
नीदेज्ज्कोब

19

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

1##&

उदाहरण उपयोग: 1##&[7,9]रिटर्न 63। दरअसल, यह एक ही फ़ंक्शन किसी भी प्रकार के तर्कों की संख्या को एक साथ गुणा करता है।

जैसा कि मैथेमेटिका कोडगॉल्फर्स जानते हैं, यह काम करता है क्योंकि ##एक फ़ंक्शन के तर्कों के पूरे अनुक्रम को संदर्भित करता है, और मैथेमैटिका (अक्सर) में संघनन गुणा का प्रतिनिधित्व करता है; इसलिए 1##फ़ंक्शन के सभी तर्कों के उत्पाद को (1 बार) संदर्भित करता है। &बस के लिए कम है Functionआदेश एक शुद्ध (बेनाम) समारोह को परिभाषित करता है कि।

अन्य कोड के अंदर, सामान्य चिन्ह *गुणन के रूप में कार्य करता है। तो एक स्थान है, इसलिए है कि के 7 9रूप में व्याख्या की जाती है 7*9(वास्तव में, Mathematica के वर्तमान REPL संस्करण वास्तव में ऐसे स्थानों को गुणन संकेतों के रूप में प्रदर्शित करता है!)। इससे भी बेहतर, हालांकि, अगर गणितज्ञ बता सकता है कि एक टोकन कहां से शुरू होता है और दूसरा समाप्त होता है, तो गुणन ऑपरेटर के लिए बिल्कुल भी बाइट की आवश्यकता नहीं होती है: 5yस्वचालित रूप 5*yसे और के 3.14Log[9]रूप में व्याख्या की जाती है 3.14*Log[9]


क्या ##&अमान्य है?
लिन

##&qu अनुक्रम ’ऑब्जेक्ट के रूप में अपने तर्कों की सूची लौटाता है - अन्य कार्यों में प्लग करने के लिए उपयुक्त है जो कई तर्क लेते हैं। इस संदर्भ में, ##&अपने तर्कों की सूची में कुछ भी नहीं करता है; हम चाहते हैं कि सूची को एक साथ गुणा किया जाए।
ग्रेग मार्टिन

19

रेटिना , 38 37 31 बाइट्स

पूरी तरह से नया तरीका, पुराना वाला नीचे है।

M!`-
*\)`-¶-

.* 
$*_
_
$'$*_
_

इसे ऑनलाइन आज़माएं!

व्याख्या

सबसे पहले, हम साइन इन करते हैं:

M!`-

सभी -स्ट्रिंग में मेल खाता है और उन्हें नए सिरे से अलग करता है

*\)`-¶-

(एक निम्न रिक्त रेखा के साथ) का
*\)मतलब है कि इसका परिणाम और पिछले चरणों को एक नई रेखा के बिना मुद्रित किया जाना चाहिए, और फिर स्ट्रिंग जो पहले थी (इनपुट स्ट्रिंग) में वापस आ गई। शेष भाग -एक नई रेखा द्वारा दो अलग हो जाते हैं।

फिर हम पहले नंबर को यूरीरी में बदलते हैं:

.* 
$*_

(पहली पंक्ति के अंत में एक स्थान है)। हम _इस मामले में हमारे एक अंक के रूप में उपयोग करते हैं , क्योंकि मानक अंक 1दूसरी संख्या में मौजूद हो सकता है, और यह बाद में संघर्ष करेगा।

अब हम वास्तविक गुणन में आते हैं:

_
$'$*_

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

अंत में, एक एकल के साथ _हम _स्ट्रिंग में संख्या लौटाते हैं , जो गुणा का परिणाम होगा।


पिछला उत्तर: (चेतावनी: जब आउटपुट होना चाहिए तो एक खाली स्ट्रिंग आउटपुट करता है 0)

रेटिना ,  45  42 41 बाइट्स

चलो एक खेल खेलते है! एक ऐसी भाषा के साथ सापेक्ष संख्याओं को गुणा करें जिसका कोई अंकगणित ऑपरेटर नहीं है और केवल प्राकृतिक संख्याओं के लिए सीमित समर्थन है ... अजीब लगता है :)

O^`^|-
--

\d+
$*
1(?=1* (1*))?
$1
1+
$.&

व्याख्या

संकेत के साथ पहली तीन लाइनें सौदा करती हैं:

O^`^|-

यह सॉर्ट करता है Oऔर फिर ^regex से मेल खाते सभी तारों को उलट देता है ^|-। व्यवहार में यह शुरुआत में खाली स्ट्रिंग से मेल खाता है, और दूसरी संख्या से पहले अंतिम माइनस साइन करता है, और उन्हें खाली स्ट्रिंग को माइनस के स्थान पर रखकर फिर से सेट करता है। इसके बाद, सभी -स्ट्रिंग की शुरुआत में हैं, और उनमें से एक जोड़ी को अगली दो पंक्तियों के साथ आसानी से हटाया जा सकता है।

उसके बाद, हम संख्याओं को एकात्मक प्रतिनिधित्व में बदलने के लिए एक बेसिन का उपयोग करते हैं, और फिर वास्तविक गुणन आता है:

1(?=1* (1*))?
$1

हम किसी भी मेल खाते हैं 1, और उनमें से प्रत्येक के साथ 1एक निम्नलिखित स्थान के बाद स्थानापन्न । पहली संख्या के प्रत्येक अंक को पूर्ण दूसरी संख्या से बदल दिया जाएगा, जबकि दूसरी संख्या के प्रत्येक अंक को रिक्त स्ट्रिंग द्वारा प्रतिस्थापित किया जाएगा।

अंतिम भाग फिर से एक बेसिन है जो यूनरी से दशमलव में वापस परिवर्तित होता है।

इसे ऑनलाइन आज़माएं!


2
काश मैं हर बार जब आप इसे गोल्फ, अच्छा काम प्रस्तुत कर सकते हैं!
कृति लिथोस

वाह, वह नया तरीका अद्भुत है। मुझे लगता है कि आप जीत गए। :) (और यह मुझे और भी आश्वस्त करता है कि इसके लिए डिफ़ॉल्ट चरित्र $*होना चाहिए _।)
मार्टिन एंडर

Btw, यहाँ एक ही बाइट गिनती में ASCII-
मार्टिन

1
मजेदार तथ्य: जाहिरा तौर पर मैंने कुछ बिंदुओं पर खुद एक एक और एक दशमलव ऑपरेटर को मिलाने की चाल समझ ली थी।
मार्टिन एंडर

1
मैंने इसे रेटिना 1.0 में अद्यतन करने की कोशिश की और नई सीमाओं और नए पुनरावृत्ति ऑपरेटर के लिए धन्यवाद, इसे अब केवल 23 बाइट्स की आवश्यकता है: tio.run/##K0otycxLNPyvpxqj4Z7wXvvv9vQ9BQ0BPPW4dLiyueS0UdSP7/ " ... " ... स्टेज अब ( .+,(.+)को $.($1**) लेकिन यह वास्तव में यहाँ अधिक बाइट्स है।
मार्टिन एंडर

18

खरोंच , 1 बाइट

यहां छवि विवरण दर्ज करें

उपयोग: *साइन के दोनों किनारों में नंबर रखें

नोट: चूंकि स्क्रैच एक दृश्य भाषा है, इसलिए मैं यह पता नहीं लगा सका कि @ mbomb007 तक कितने बाइट्स की खपत होती है, मुझे स्क्रैच बाइट्स गिनने की विधि के बारे में बताया



@ mbomb007 आपकी टिप्पणी के लिए धन्यवाद!
rahnema1

15

ब्रेन-फ्लैक , 56 बाइट्स

([({}<([({})<>])<>>)<>]){({}[()]<(({})<({}{})>)>)<>}{}{}

इसे एक पूर्ण प्रोग्राम के रूप में चलाया जाना चाहिए क्योंकि यह स्टैक क्लीन नहीं है और इनपुट्स को स्टैक में केवल एक ही तत्व होना चाहिए।

इसे ऑनलाइन आज़माएं!


स्पष्टीकरण: (इनपुट्स x और y पर कॉल करें)

भाग 1:

([({}<([({})<>])<>>)<>])

([                    ]) # Push negative x on top of:
      ([      ])         # negative y. After...
  ({}<            >)     # pushing x and...
        ({})             # y...
            <>  <>  <>   # on the other stack (and come back)

इस बिंदु पर हमारे पास एक स्टैक पर [x, y] और दूसरे पर [-x, -y] है।

भाग 2:

{({}[()]<(({})<({}{})>)>)<>}{}{}
{                          }     # Loop until x (or -x) is 0
 ({}[()]<              >)        # Decrement x
         (({})<      >)          # Hold onto y
               ({}{})            # Add y and the number under it (initially 0)
                         <>      # Switch stacks
                            {}{} # Pop x and y leaving the sum

1
वाह! निश्चित रूप से सबसे प्रभावशाली जवाब अब तक
DJMcMayhem

@DJMcMayhem और (थोड़ा संशोधित) यह 18 बाइट्स द्वारा विकी पर एक को हराता है
रिले

क्या आपके पास मस्तिष्क-फ्लैक विकी तक पहुंच है? मुझे एक छोटा संस्करण अपलोड करना अच्छा लगेगा।
DJMcMayhem

@DJMcMayhem मेरे पास पहुंच नहीं है। यदि आप एक नज़र लेना चाहते हैं, और इसे अपलोड करना चाहते हैं, तो मैंने ब्रेन-फ्लैक चैटरूम में छोटे को पोस्ट किया।
रिले

मुझे पता है कि यह थोड़ी देर का है, लेकिन आपके पास कुछ प्रतियोगिता है ;)
गेहूं जादूगर

11

जावास्क्रिप्ट (ईएस 6), 9 बाइट्स

ES6 में 32-बिट पूर्णांकों के लिए एक समर्पित फ़ंक्शन है, जो अधिक सामान्य *ऑपरेटर की तुलना में तेज़ है ।

Math.imul

संयोग से, यह बस के रूप में लंबे समय के रूप में है:

a=>b=>a*b

बहुत बढ़िया, अब मैं Math.imul को जानता हूं, धन्यवाद!
चौ ० जियांग

9

ब्रेन-फ्लैक , 56 54 52 बाइट्स

2 बाइट्स ने नाइट्रोडॉन द्वारा पकड़ी गई गलती के लिए धन्यवाद बचाया

({}(<()>)<>)({<([{}({}())])><>([{}]([{}]))<>}<{}{}>)

इसे ऑनलाइन आज़माएं!

स्टैक स्वच्छ संस्करण, 62 60 बाइट्स

({}(<()>)(<>))({<([{}({}())])><>([{}]([{}]))<>}<{}{}<>{}{}>)

इसे ऑनलाइन आज़माएं!

व्याख्या

यह स्पष्टीकरण शामिल एल्गोरिथ्म का स्पष्टीकरण अधिक है और किसी भी वास्तविक कोड को छोड़ देता है। यह मानता है कि आप ब्रेन-फ्लैक को दक्षता से पढ़ना जानते हैं। यदि आपको कोड या एल्गोरिथ्म को समझने में सहायता की आवश्यकता है, तो यदि आप एक टिप्पणी छोड़ते हैं तो मुझे संपादित करने या प्रतिक्रिया करने में खुशी होगी।

यह एक अजीब सा है और कुछ अजीब गणित का उपयोग करता है जो बस मुश्किल से काम करता है। मैंने जो पहला काम किया था, वह एक लूप बनाना था जो हमेशा O (n) चरणों में समाप्त होगा । ऐसा करने का सामान्य तरीका यह है कि n और -n को एक समान स्टैक पर रखा जाए और एक को शून्य हिट होने तक एक-एक जोड़ा जाए, हालांकि मैंने इसे थोड़ा अजनबी तरीके से किया। मेरी विधि में मैं इनपुट के नीचे एक काउंटर डाल दिया और हर कदम मैं काउंटर में जोड़ने को बढ़ा देते एन और के हस्ताक्षर फ्लिप n

एक उदाहरण के माध्यम से चलते हैं। एन = 7 कहें

7  -8   6  -9   5 -10   4 -11   3 -12   2 -13   1 -14   0
0   1   2   3   4   5   6   7   8   9  10  11  12  13  14

मैं इसे यहाँ साबित नहीं करूँगा लेकिन यह हमेशा किसी भी इनपुट के लिए समाप्त होगा और लगभग 2n चरणों में ऐसा करेगा । वास्तव में यह 2n चरणों में समाप्त होगा यदि n सकारात्मक है और 2n-1 चरण यदि n नकारात्मक है। आप यहां से परीक्षण कर सकते हैं

अब हमारे पास हमारे पाश में लगभग 2n चरण हैं हम n से कैसे गुणा करते हैं ? वैसे यहाँ कुछ गणित का जादू है। यहाँ हम क्या करते हैं: हम एक संचायक बनाते हैं, प्रक्रिया के प्रत्येक चरण में हम दूसरे इनपुट ( m ) को संचायक में जोड़ते हैं और उन दोनों के चिह्न को पलटाते हैं, हम तब होने वाले सभी छोरों पर कुल धक्का देते हैं, यह है उत्पाद।

पृथ्वी पर ऐसा क्यों है?

खैर एक उदाहरण के माध्यम से चलते हैं और उम्मीद है कि यह स्पष्ट हो जाएगा। इस उदाहरण में हम 5 को 3 से गुणा कर रहे हैं , मैं केवल महत्वपूर्ण मान दिखाऊंगा

total       -> 0  -5   5 -10  10 -15  15
accumulator -> 0  -5  10 -15  20 -25  30
m           -> 5  -5   5  -5   5  -5   5

उम्मीद है कि तंत्र यहाँ स्पष्ट है। हम उनके निरपेक्ष मूल्यों के क्रम में मी के सभी गुणकों के माध्यम से आगे बढ़ रहे हैं । फिर आप ध्यान देंगे कि 2n वें शब्द हमेशा m * n है और हमेशा -m * n से पहले का शब्द है । यह इसे इतना बनाता है कि हमारा लूपिंग हमारे इच्छित परिणामों के साथ पूरी तरह से जुड़ जाता है। एक सुखद संयोग का एक सा;)


8

8

आर, 3 बाइट्स

'*'

यह एक ऐसा फंक्शन है जिसमें दो तर्क दिए जाते हैं। के रूप में चलाएँ '*'(a,b)

यह भी देखें prodकि वही काम करता है लेकिन एक मनमानी संख्या ले सकता है।


क्या यह अपने आप में एक वैध अभिव्यक्ति है? यदि नहीं, तो इसे प्रस्तुत करने की आवश्यकता है '*'

@ ais523 आह, आप सही कह रहे हैं, यह अपने आप में एक वैध अभिव्यक्ति नहीं है। मैंने पोस्ट को स्पष्ट करने के लिए संपादित किया है। धन्यवाद!
rturnbull

4
डाउनवोटर्स को: यह तय हो गया है।
R


8

हेक्सागोनी , 9 बाइट्स

?{?/*!@'/

इसे ऑनलाइन आज़माएं!

यह वास्तव में काफी सीधा है। यहाँ सामने आया संस्करण है:

  ? { ?
 / * ! @
' / . . .
 . . . .
  . . .

/सिर्फ तीसरे पर बाइट्स को बचाने के लिए दूसरी पंक्ति के लिए नियंत्रण प्रवाह अनुप्रेषित। इस रैखिक कार्यक्रम के कोड को कम करता है:

?{?'*!@

यदि इनपुट कड़ाई से सकारात्मक संख्या तक सीमित था, लेकिन अपने आप ही यह रैखिक कोड वास्तव में एक वैध समाधान होगा, लेकिन गैर-सकारात्मक परिणामों की संभावना के कारण, इसे समाप्त करने की गारंटी नहीं है।

कार्यक्रम वाई-आकार में तीन मेमोरी किनारों का उपयोग करता है:

A   B
 \ /
  |
  C

मेमोरी पॉइंटर Aकेंद्र की ओर इशारा करते हुए शुरू होता है।

?   Read first input into edge A.
{   Move forward to edge B.
?   Read second input into edge B.
'   Move backward to edge C.
*   Multiply edges A and B and store the result in C.
!   Print the result.
@   Terminate the program.

मैंने 7-बाइट समाधानों के लिए एक ब्रूट फोर्स सर्च चलाया (यानी जो साइड-लेंथ 2 में फिट होते हैं), और अगर मैंने कोई गलती नहीं की (या एक व्यस्त-बीवर-वाई समाधान है जिसे पूरा करने में लंबा समय लगता है, जो मुझे संदेह है) तो एक 7-बाइट समाधान मौजूद नहीं है। एक 8-बाइट समाधान (उदाहरण ?के लिए दो के बजाय केवल एक पुनर्निर्देशन आदेश का उपयोग करके या हो सकता है) हो सकता है /, लेकिन यह परे है कि मेरी पाशविक बल खोज क्या कर सकती है, और मुझे अभी तक एक हाथ से नहीं मिला है।


7

पीट , 16 बाइट्स

5bpiaibpikibptai

ऑनलाइन दुभाषिया यहाँ उपलब्ध है।

व्याख्या

चलाने के लिए, लिंक किए गए पृष्ठ के दाईं ओर स्थित पाठ बॉक्स में ऊपर कोड चिपकाएँ। नीचे कोडेल आकार 31 के साथ इस कोड का एक चित्रमय प्रतिनिधित्व है। ग्रिड पठनीयता के लिए है और पारंपरिक पीइट दुभाषियों के साथ हस्तक्षेप कर सकता है।
कोड बाईं से दाईं ओर रैखिक रूप से चलता है, पहले हरे रंग के ब्लॉक तक छवि के शीर्ष पर जा रहा है, जहां प्रोग्राम प्रवाह कोडल्स की मध्य पंक्ति में जाता है। प्रोग्राम प्रवाह के लिए सफेद लोन सफेद कोडेल आवश्यक है। इसे हरे या गहरे नीले रंग के अलावा किसी भी रंग के कोडेल से बदला जा सकता है, लेकिन मैंने पठनीयता के लिए सफेद चुना है।

कोड विज़ुअलाइज़ेशन

Instruction    Δ Hue    Δ Lightness    Stack
-----------    -----    -----------    -----
In (Number)    4        2              m
In (Number)    4        2              n, m
Multiply       1        2              m*n
Out (Number)   5        1              [Empty]
[Exit]         [N/A]    [N/A]          [Empty]

यदि आपको लगता है कि पाठ पीट कार्यक्रम का प्रतिनिधित्व करने का सबसे अच्छा तरीका नहीं है या सामान्य रूप से पीट कार्यक्रमों के बाइट के आकार के साथ एक मुद्दा है, तो कृपया मेटा पर चर्चा में अपनी राय से अवगत कराएं


7

बिट साइकिल -U , 68 बाइट्स

  >    > v
 ?+ >  +
Bv ?^ v ~
 \  v<CB~\v
 Cv  ^  <\/
^ <@=!   <
0A^

इसे ऑनलाइन आज़माएं!

दो संख्याओं को गुणा करना BitCycle में एक तुच्छ समस्या नहीं है, खासकर जब संकेतों को संभालने की आवश्यकता होती है! यह मेरा दूसरा प्रयास है; पहले एक (अनिवार्य रूप से एक ही एल्गोरिथ्म, अलग लेआउट) 81 बाइट्स थे, इसलिए यह बहुत संभव है कि इसे भी छोटा किया जा सकता है।

कार्यक्रम कमांड लाइन तर्क और stdout को आउटपुट के रूप में दो नंबर लेता है। -Uध्वज को दशमलव संख्या परिवर्तित करना है पर हस्ताक्षर किए एकल , के बाद से BitCycle केवल 0 और 1 के जानता है।

व्याख्या

यह व्याख्या आपको मानती है कि आप BitCycle की मूल बातें समझते हैं ( Esolangs या GitHub readme देखें)। मैं इस असम्बद्ध संस्करण पर अपनी व्याख्या को आधार बनाऊँगा, यहाँ कंप्यूटिंग -2समय देखा गया है 3:

BitCycle में हस्ताक्षरित गुणन

अवलोकन

हस्ताक्षर किए गए 0एकात्मक संख्याओं में साइन होते हैं ( असंवेदनशील के लिए, धनात्मक के लिए खाली), परिमाण के बाद ( 1संख्या के निरपेक्ष मान के बराबर संख्या)। उनमें से दो को गुणा करने के लिए, हमें संकेतों ( 0यदि वास्तव में उनमें से एक है 0या कुछ भी नहीं है , तो आउटपुट को XOR करने की आवश्यकता है ) और फिर परिमाण (और आउटपुट को गुणा करें)1 एस) को । हम बार-बार जोड़कर गुणन प्राप्त करेंगे।

बिट्स पर हस्ताक्षर करें

दो स्रोतों से शुरू करके ?, हम संकेतों का उपयोग करके परिमाणों से अलग हो जाते हैं +0s (साइन बिट्स) बाईं ओर मुड़ते हैं और शीर्ष पंक्ति के साथ निर्देशित होते हैं, जबकि 1s (परिमाण) दाएं मुड़ते हैं और दो Bकलेक्टरों में समाप्त होते हैं ।

संकेत को संभालने वाला खंड इस तरह दिखता है:

  v

  \  v
> \  /

! <

यदि दोनों संख्याएँ असंवेदनशील हैं, 0तो ऊपर से दो बिट्स आते हैं v। पहले वाला शीर्ष को दर्शाता है \, दक्षिण की ओर भेजा जाता है, और बंद को दर्शाता है /। इस बीच, दूसरा बिट निष्क्रिय शीर्ष से होकर गुजरता है \और नीचे से दिखाई देता है\ । दो बिट्स एक दूसरे को पास करते हैं, नीचे पंक्ति पर अब निष्क्रिय किए गए विभाजन के माध्यम से सीधे जाते हैं, और प्लेफील्ड से दूर जाते हैं।

यदि संख्याओं में से केवल एक असंवेदनशील है, तो एक 0शीर्ष से आता है। यह सभी तीन बंटवारे के आसपास उछलता है और उत्तर की ओर फिर से जाता है, जब तक कि यह हिट नहीं होता है vऔर एक बार और दक्षिण भेजा जाता है। इस बार, यह निष्क्रिय किए गए विभाजन से गुजरता है और उस तक पहुंचता है <, जो इसे सिंक में भेजता है !

परिमाणों को संग्रहीत करने के लिए लूप

पहली संख्या का परिमाण Bइस खंड में कलेक्टर में जाता है :

B v
  \
  C v
^   <

0 A ^

Bकलेक्टर के खुलने से पहले , Aकलेक्टर ने उस एकल को जारी किया 0जो उसमें रखा गया था, जो तब कतार के अंत में चला जाता है B। हम सभी 1बिट्स Bचले जाने पर लूप को समाप्त करने के लिए एक ध्वज मूल्य के रूप में इसका उपयोग करेंगे ।

हर बार Bकलेक्टरों को खोलने के बाद, \फाड़नेवाला कतार से पहली बिट को छीलता है और इसे बीच में प्रसंस्करण तर्क के लिए भेजता है। शेष बिट्स में जाते हैं C, और जब Cकलेक्टर खुलते हैं, तो उन्हें वापस भेजा जाता है B

दूसरे Bखंड की परिमाण इस खंड में कलेक्टर में जाती है :

v   ~
C B ~
    <

जब Bकलेक्टरों को खोलते हैं, तो बिट नीचे के डुप्नेग में चले जाते हैं ~। मूल 1बिट दाईं ओर मुड़ते हैं और पश्चिम में प्रसंस्करण तर्क के बीच में भेजे जाते हैं। नकारात्मक प्रतियाँ 0बायीं ओर मुड़ती हैं और तुरंत दूसरे दुपट्टे से टकराती हैं। यहाँ 0एस दाएं मुड़ते हैं और प्लेफील्ड से दूर जाते हैं, जबकि (अब दोगुना) नेगेटिव 1एस टर्न लेफ्ट होता है और उसे भेजा जाता है C। जब Cखुलता है, तो वे वापस चले जाते हैं B

बार-बार जोड़ा

केंद्रीय प्रसंस्करण तर्क यह हिस्सा है:

   v
   v


@  =  !

दोनों छोरों (पश्चिमी तरफ से एक, और पूर्वी तरफ से सब कुछ) से बिट्स स्विच में दक्षिण में भेजे जाते हैं =। समय निर्धारित करना होगा ताकि पश्चिमी लूप से बिट पहले वहां पहुंचे। यदि यह एक है 1, तो स्विच बदल जाता है }, निम्न बिट्स !को आउटपुट में सिंक में पूर्व की ओर भेज देता है । एक बार सभी 1s चले जाने के बाद, हमें वह मिलता है 0, जो स्विच को बदल देता है {। यह निम्नलिखित बिट्स को इसमें भेजता है @, जो प्रोग्राम को समाप्त करता है। संक्षेप में, हम दूसरी संख्या के (एकतरफा) परिमाण को कई बार आउटपुट करते हैं 1क्योंकि पहली संख्या के (यूनरी) परिमाण में s होते हैं ।



6

जावा 8, 10 9 बाइट्स

a->b->a*b

इसे यहाँ आज़माएँ।

जावा 7, 31 बाइट्स

int c(int a,int b){return a*b;}

इसे यहाँ आज़माएँ।

पूर्ण कार्यक्रम के रूप में ( 99 90 बाइट्स) :

interface M{static void main(String[]a){System.out.print(new Long(a[0])*new Long(a[1]));}}

इसे यहाँ आज़माएँ।


2
आपके लिए पूर्ण कार्यक्रम में एक टाइपो है, जिसे *इंस्टा किया जाना चाहिए +
corvus_192

आपको a,bलंबोदर अभिव्यक्ति में कोष्ठक की आवश्यकता नहीं है ।
17

5

अजगर, 2 बाइट्स

*E

यहाँ कोशिश करो!

पाइथ का स्वचालित मूल्यांकन यहां के रास्ते में हो जाता है। इसके चारों ओर जाने के लिए, मैं एक तर्क के लिए स्पष्ट मूल्यांकन का उपयोग कर रहा हूं


वाह अच्छी बात है। यह भविष्य में काम आएगा।
गुरुपद ममदापुर

5

टीआई-बेसिक, 2 बाइट्स

बहुत सीधा है।

prod(Ans

1
Ansअनुमति नहीं है I / O विधि
Mego

2
किसके अनुसार? यह लिंक सात वोट दिखाता है
टाइमटेक

1
@Timtech यह टिप्पणी के समय नहीं था, लेकिन यह चैट में पोस्ट किया गया था, इसलिए यह मान्य हो गया
ब्लू

ठीक है, टिप @muddyfish के लिए धन्यवाद
टिमटेक 23

5

PHP, 21 बाइट्स

<?=$argv[1]*$argv[2];

कमांड लाइन तर्कों से इनपुट लेता है। साथ ही झांकियों के साथ काम करता है।


5

रेटिना , 39 35 बाइट्स

लियो को धन्यवाद देने के लिए कि मैंने उसका एक विचार प्रयोग किया, जिससे 4 बाइट बचीं।

[^-]

*\)`--

.+
$*
\G1
_
_|1+
$'
1

इनपुट लाइनफीड-अलग है।

इसे ऑनलाइन आज़माएं! (सुविधा के लिए अंतरिक्ष-अलग-अलग परीक्षण सूट।)

व्याख्या

पहले दो चरण माइनस साइन प्रिंट करते हैं, अगर दो इनपुट में से एक नकारात्मक है। वे वास्तव में इनपुट को बदले बिना ऐसा करते हैं। यह उन्हें दूसरे चरण में समूहीकृत करके )और उनके साथ शुष्क-क्रम में बदलकर किया जाता है *\एक अनुगामी linefeed मुद्रण दूसरे चरण रोकता है पर विकल्प।

[^-]

सबसे पहले, हम माइनस संकेतों को छोड़कर सब कुछ हटा देते हैं।

*\)`--

तब हम माइनस संकेतों को रद्द कर देते हैं यदि उनमें से दो बचे हैं।

.+
$*

अब हम प्रत्येक रेखा को उसके निरपेक्ष मान के एकात्मक प्रतिनिधित्व में बदल देते हैं। इससे माइनस साइन से छुटकारा मिल जाएगा क्योंकि $*केवल मैच में पहला गैर-नकारात्मक नंबर दिखता है (यानी यह माइनस संकेतों के बारे में नहीं जानता है और उन्हें अनदेखा करता है)।

\G1
_

पहली पंक्ति को _व्यक्तिगत मिलान के 1रूप में तब तक परिवर्तित किया जाता है , जब तक कि पिछले मैच के निकट उनका मिलान नहीं होता है (इसलिए, हम 1दूसरी पंक्ति में एस का मिलान नहीं कर सकते , क्योंकि लाइनफीड इस श्रृंखला को तोड़ती है)।

_|1+
$'

यह वास्तविक गुणा करता है। हम प्रत्येक _(पहली पंक्ति पर) के साथ-साथ उस मैच के बाद पूरी दूसरी पंक्ति को बदल देते हैं। _मैचों इसलिए पूरे दूसरी पंक्ति (की संख्या से यह गुणा शामिल होंगे 0पहली पंक्ति में रों), और कहा कि मैच के बाद कुछ भी नहीं है क्योंकि वहाँ दूसरी पंक्ति हटा दिया जाएगा। बेशक परिणाम में _एस और लाइनफीड के रूप में कुछ कबाड़ भी शामिल होंगे , लेकिन यह कोई फर्क नहीं पड़ेगा।

1

हम 1परिणाम में केवल s की संख्या गिनकर समाप्त करते हैं।


5

MATLAB, 5 4 बाइट्स

@dot

dot लेता है बराबर लंबाई के दो वैक्टर के डॉट उत्पाद । यदि हम इसे दो स्केलरों के साथ खिलाते हैं, तो यह बस दो संख्याओं को गुणा करेगा।

prodएक मैट्रिक्स के प्रत्येक कॉलम की सभी पंक्तियों में मानों का उत्पाद लेता है। यदि मैट्रिक्स एक आयामी (यानी एक वेक्टर) है, तो यह गैर-सिंगलटन आयाम के साथ काम करता है, वेक्टर में सभी तत्वों के उत्पाद लेता है।

dot एक बाइट से छोटा है prod जो एक बाइट से भी अधिक स्पष्ट बिल्टिन से छोटा है times

इसे इस तरह से कॉल करें:

@dot
ans(3,4)
ans = 
   12

4

कबूतरबाजी , 1 बाइट

*

स्पष्टीकरण:
*देखने के लिए स्टैक दिखता है कि क्या वहां कुछ है। यदि नहीं, तो यह इनपुट के लिए संकेत देता है और इनपुट को एक साथ गुणा करता है


5
यह जोड़ा जाना चाहिए यहाँ के बजाय
mbomb007

4

पर्ल 6 , 4 बाइट्स

&[*]

यह सिर्फ साधारण इन्फिक्स गुणन ऑपरेटर है *, जिसे एक साधारण फ़ंक्शन के रूप में व्यक्त किया जाता है। एक बोनस के रूप में, यदि एक नंबर दिया जाता है तो वह उस नंबर को वापस कर देता है, और यदि वह नंबर नहीं दिया जाता है 1, तो वह गुणात्मक पहचान है।


वैकल्पिक 4 यूटीएफ -8 बाइट समाधान:*×*
nwellnhof

4

> <>, 5 बाइट्स

i|;n*

एक अस्सी चरित्र के रूप में इनपुट लेता है, एक संख्या को आउटपुट करता है।

स्पष्टीकरण:

i                        | Get input.
 |                       | Mirror: Change the pointer's direction.
i                        | Get input again.
    *                    | Loop around to the right side. Multiply
   n                     | Print the value on the stack, as a number
  ;                      | End the program

आप भी कर सकते हैं

ii*n;

लेकिन मुझे लगता है कि मेरा समाधान वाया है कूलर है।

एक और संभावना अर्धविराम को गिराने की है, जिसके परिणामस्वरूप पॉइंटर दर्पण से उछलता है, प्रिंट कमांड को मारता है, और स्टैक खाली होने के बाद त्रुटि को फेंक देता है।


4

Intel 8080 मशीन कोड , MITS Altair 8800 , 28 बाइट्स

यह इंटेल 8080 सीपीयू (सी। 1974) पर द्विआधारी गुणन को लागू करता है जिसमें गुणन या विभाजन निर्देश नहीं थे। इनपुट्स 8-बिट वैल्यू हैं और उत्पाद 16-बिट वैल्यू है जो रजिस्टर पेयर में दी गई है।BC

यहां फ्रंट पैनल स्विच का उपयोग करके प्रोग्राम को Altair 8800 में लोड करने के लिए चरण-दर-चरण निर्देशों के साथ मशीन कोड है ।

Step    Switches 0-7    Control Switch  Instruction Comment
1                       RESET
2       00 001 110      DEPOSIT         MVI  C, 5   Load multiplier into C
3       00 000 101      DEPOSIT NEXT                value is 5
4       00 010 110      DEPOSIT NEXT    MVI  D, 16  Load multiplicand into D
5       00 010 000      DEPOSIT NEXT                value is 16
6       00 000 110      DEPOSIT NEXT    MVI  B, 0   clear B register (high byte of result)
7       00 000 000      DEPOSIT NEXT
8       00 011 110      DEPOSIT NEXT    MVI  E, 9   set loop counter E multiplier size
9       00 001 001      DEPOSIT NEXT                (8 bits + 1 since loop ends in middle)
10      01 111 001      DEPOSIT NEXT    MOV  A, C   move multiplier into A for shift
11      00 011 111      DEPOSIT NEXT    RAR         shift right-most bit to CF
12      01 001 111      DEPOSIT NEXT    MOV  C, A   move back into C
13      00 011 101      DEPOSIT NEXT    DCR  E      decrement loop counter
14      11 001 010      DEPOSIT NEXT    JZ   19 00  loop until E=0, then go to step 27
15      00 011 001      DEPOSIT NEXT
16      00 000 000      DEPOSIT NEXT
17      01 111 000      DEPOSIT NEXT    MOV  A, B   move sum high byte into A
18      11 010 010      DEPOSIT NEXT    JNC  14 00  add if right-most bit of 
19      00 010 100      DEPOSIT NEXT                multiplier is 1, else go to 22
20      00 000 000      DEPOSIT NEXT
21      10 000 010      DEPOSIT NEXT    ADD  D      add shifted sums
22      00 011 111      DEPOSIT NEXT    RAR         shift right new multiplier/sum
23      01 000 111      DEPOSIT NEXT    MOV  B, A   move back into B
24      11 000 011      DEPOSIT NEXT    JMP  08 00  go to step 10
25      00 001 000      DEPOSIT NEXT
26      00 000 000      DEPOSIT NEXT
27      11 010 011      DEPOSIT NEXT    OUT  255    display contents of A on data panel
28      11 111 111      DEPOSIT NEXT
30      01 110 110      DEPOSIT NEXT    HLT         Halt CPU
31                      RESET                       Reset program counter to beginning
32                      RUN
33                      STOP

इसे ऑनलाइन आज़माएं!

यदि आपने यह सब सही ढंग से दर्ज किया है, तो सिम्युलेटर में मशीन स्टेट ड्रावर पर आपकी रैम सामग्री दिखाई देगी:

0000    0e 05 16 10 06 00 1e 09 79 1f 4f 1d ca 19 00 78 
0010    d2 14 00 82 1f 47 c3 08 00 d3 ff 76

इनपुट

Cरजिस्टर में गुणक , और गुणक में D। स्टॉक अल्टेयर का कोई STDINइनपुट नहीं है, केवल फ्रंट पैनल स्विच द्वारा।

उत्पादन

परिणाम पर प्रदर्शित होता है D7- D0रोशनी (ऊपरी दाएँ पंक्ति) बाइनरी में।

5 x 16 = 80 (0101 0000)

यहां छवि विवरण दर्ज करें

4 x 5 = 20 (0001 0100)

यहां छवि विवरण दर्ज करें

7 x 9 = 63 (0011 1111)

यहां छवि विवरण दर्ज करें

8 x -9 = -72 (1011 1000)

यहां छवि विवरण दर्ज करें

संगतता नोट: यह IMSAI 8080 पर भी चलना चाहिए , हालांकि वर्तमान में अप्रयुक्त है।


3

सी #, 10 बाइट्स

a=>b=>a*b;

यह सिर्फ एक गुणा है।


आपने मुझे इसमें हरा दिया!
TheLethalCoder

=> => कैसे काम करता है? मुझे उम्मीद है (ए, बी) => ए * बी;
कार्रा

1
@ करारा काम करता है, कि यह लैम्ब्डा एक्सप्रेशन एक प्रतिनिधि को लौटाता है, जो परिणाम देता है, इसलिए आप इसे इस तरह कहते हैं, यदि आप इस लैम्ब्डा को f: f (a) (b) कहते हैं।
होर्वाथ दविद



3

क्लोजर, 1 बाइट

*

: पी बोनस के रूप में यह किसी भी तर्क पर काम करता है:

[(*)
 (* 2)
 (* 2 3)
 (* 2 3 4)
 (* 2 3 4 5)] => [1 2 6 24 120]

दिलचस्प है कि आप आसानी से इसका स्रोत कोड प्राप्त कर सकते हैं:

(source *)
(defn *
  "Returns the product of nums. (*) returns 1. Does not auto-promote
  longs, will throw on overflow. See also: *'"
  {:inline (nary-inline 'multiply 'unchecked_multiply)
   :inline-arities >1?
   :added "1.2"}
  ([] 1)
  ([x] (cast Number x))
  ([x y] (. clojure.lang.Numbers (multiply x y)))
  ([x y & more]
     (reduce1 * (* x y) more)))

3

उल्लू , 11 बाइट्स

λx.λy.x*y

यह इस तरह एक समारोह को सौंपा जा सकता है:

multiply:λx.λy.x*y

और इस तरह बुलाया:

result<multiply(a,b)

क्या यह काम नहीं करता है? कृपया डो वोट की व्याख्या करें।
कॉनर ओ'ब्रायन

मैं नीच नहीं था, लेकिन मुझे लगता है कि मैं अनुमान लगा सकता हूं कि क्या हुआ था: यह एक बहुत ही तुच्छ प्रश्न है (और इस तरह बहुत भारी गिरावट आई है, लेकिन कई अपवॉट्स को उस रद्द कर दिया गया है), और उन लोगों को आकर्षित करने की संभावना है जो तुच्छ सवालों को दरकिनार करते हैं। यह उत्तर भी काफी तुच्छ है, और यह संभावना है कि कुछ लोग जो तुच्छ प्रश्नों को कम करते हैं, वे भी तुच्छ उत्तरों को नीचा दिखाना पसंद करते हैं। (व्यक्तिगत रूप से, मैं 0 पर तुच्छ उत्तर छोड़ना पसंद करता हूं, इसलिए मैं इस पर किसी भी तरह से मतदान नहीं कर रहा हूं।)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.