var QUESTION_ID=106182,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respuestas:
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
Puede editar esta respuesta para agregar otros idiomas para los cuales
*
es una respuesta válida.fuente
*(5,16)
C (GCC), 13 bytes
No funciona en todas las implementaciones, pero está bien.
Pruébalo en TIO!
fuente
a
? No lo entiendo ...a
es una variable de pila local paraf()
, ¿por qué se devuelve su valor?). +1, por cierto - abuso muy inteligente de la ABI.return
palabra clave simplemente coloca el resultado del argumento en el registro EAX. En este caso, el ejecutable generado realiza el cálculoa*b
en ese registro, por loreturn
que no hace nada.f(a,b){a*=b;}
parte con1##&
y luego simplemente cambiando su idioma a Mathematica.Beatnik , 888 bytes
Pruébalo en línea!
Estoy usando el intérprete C porque el intérprete de Python en TIO ejecuta molestamente la dirección si no se cumple la condición para saltar hacia atrás. Una solución fácil para el intérprete de Python es rellenar algunos nops para que la dirección nop. Creo que ninguno es correcto:
La entrada debe ser dos enteros separados por un espacio, sin líneas nuevas.
Esta respuesta funciona en teoría para todos los enteros, si cada celda puede almacenar un valor arbitrariamente grande, no limitado a 0 - 255. Pero se desborda si | A | + | B | > 22. Y funciona muy lentamente si | A | + | B | > 6. Por lo tanto, no hay muchos casos que pueda probar y una solución if-else para esos casos podría ser aún más corta.
La idea es calcular los números triangulares T (N) = N (N + 1) / 2 disminuyendo el valor a 0 y sumando todos los valores intermedios. Entonces podemos obtener la respuesta A * B = T (A + B) - T (A) - T (B).
Pero es complicado calcular los 3 valores. Lo hace calculando en primer lugar T (A + B) - A, dejando una copia de A en la pila para agregar más tarde y utilizando la entrada B. Luego, recursivamente, encuentra el mayor número triangular más pequeño que eso, que es T ( A + B-1) excepto para los casos especiales cero. Podemos recuperar B = T (A + B) - A - T (A + B-1) y calcular T (B) desde allí.
Un número N es un número triangular si es igual al mayor número triangular menor que N, más el número de números triangulares no negativos menores que N. Esto se ejecuta en O (2 ^ (T (A + B) -A)) y es la parte más lenta del programa.
fuente
Mathematica, 4 bytes
Ejemplo de uso:
1##&[7,9]
devoluciones63
. De hecho, esta misma función multiplica cualquier cantidad de argumentos de cualquier tipo juntos.Como saben los codegolfers de Mathematica, esto funciona porque se
##
refiere a la secuencia completa de argumentos a una función, y la concatenación en Mathematica (a menudo) representa la multiplicación; entonces se1##
refiere (1 veces) al producto de todos los argumentos de la función. El&
es simplemente la abreviatura delFunction
comando que define una función pura (sin nombre).Dentro de otro código, el símbolo común
*
actúa como multiplicación. También lo hace un espacio, por lo que7 9
se interpreta como7*9
(de hecho, la versión REPL actual de Mathematica en realidad muestra espacios como signos de multiplicación). Sin embargo, aún mejor, si Mathematica puede decir dónde comienza un token y termina otro, entonces no se necesitan bytes para un operador de multiplicación:5y
se interpreta automáticamente como5*y
, y3.14Log[9]
como3.14*Log[9]
.fuente
##&
inválido?##&
devuelve su lista de argumentos como un objeto 'Secuencia', adecuado para conectarse a otras funciones que toman múltiples argumentos. En este contexto,##&
no hace nada a su lista de argumentos; queremos que esa lista se multiplique entre sí.Retina ,
383731 bytesEnfoque completamente nuevo, el anterior está debajo.
Pruébalo en línea!
Explicación
Primero, tratamos con el signo:
coincide con todos
-
en la cadena y los devuelve separados por nuevas líneas(con una línea vacía siguiente)
*\)
significa que el resultado de esto y las etapas anteriores deben imprimirse sin una nueva línea, y luego la cadena volverá a ser lo que era antes (la cadena de entrada). La parte restante elimina dos-
separados por una nueva línea.Luego convertimos el primer número a unario:
(hay un espacio al final de la primera línea). Usamos
_
como nuestro dígito unario en este caso, porque el dígito estándar1
puede estar presente en el segundo número, y esto entraría en conflicto más adelante.Ahora llegamos a la multiplicación real:
Cada uno
_
se reemplaza por la representación unaria de todo lo que le sigue (todavía se usa_
como dígito unario). Como la conversión a unario ignora los caracteres que no son dígitos, esto repetirá la representación unaria del segundo número por "primer número" veces. El segundo número permanecerá en representación decimal al final de la cadena.Al final, con un solo
_
devolvemos el número de_
en la cadena, que será el resultado de la multiplicación.Respuesta anterior: (advertencia: genera una cadena vacía cuando debería producirse
0
)Retina ,
454241 bytes¡Vamos a jugar un juego! Multiplique números relativos con un lenguaje que no tenga operadores aritméticos y soporte limitado solo para números naturales ... Suena gracioso :)
Explicación
Las primeras tres líneas tratan con el signo:
Esto ordena
O
y luego invierte^
todas las cadenas que coinciden con la expresión regular^|-
. En la práctica, esto coincide con la cadena vacía al comienzo y el signo menos eventual antes del segundo número, y los ordena colocando la cadena vacía en el lugar del signo menos. Después de esto, todos-
están al comienzo de la cadena, y un par de ellos se pueden eliminar fácilmente con las siguientes dos líneas.Después de eso, usamos una función integrada para convertir números a representación unaria, y luego viene la multiplicación real:
Hacemos coincidir cualquiera
1
, y sustituimos cada uno de ellos con todos1
después del siguiente espacio. Cada dígito del primer número será reemplazado por el segundo número completo, mientras que cada dígito del segundo número será reemplazado por la cadena vacía.La última parte es nuevamente una función incorporada para volver a convertir de unario a decimal.
Pruébalo en línea!
fuente
$*
debería ser_
)..+,(.+)
a$.($1**
) pero eso es en realidad más bytes aquí.Rasguño , 1 byte
Uso: colocar números en ambos lados del
*
signoNota: Dado que Scratch es un lenguaje visual, no pude calcular cuántos bytes consume hasta que @ mbomb007 me notó acerca de un método para contar bytes de scratch
fuente
Brain-Flak , 56 bytes
Esto debe ejecutarse como un programa completo ya que no está limpio de pila y las entradas deben ser los únicos elementos en cualquiera de las pilas.
Pruébalo en línea!
Explicación: (llame a las entradas x e y)
Parte 1:
En este punto tenemos [x, y] en una pila y [-x, -y] en la otra.
Parte 2:
fuente
JavaScript (ES6), 9 bytes
ES6 tiene una función dedicada para enteros de 32 bits, más rápido que el
*
operador más genérico .Por cierto, esto es tan largo como:
fuente
Brain-Flak ,
565452 bytes2 bytes guardados gracias a un error detectado por Nitrodon
Pruébalo en línea!
Versión limpia de pila,
6260 bytesPruébalo en línea!
Explicación
Esta explicación es más una explicación del algoritmo involucrado y omite cualquier código real. Se supone que sabes leer Brain-Flak de manera competente. Si necesita ayuda para comprender el código o el algoritmo, me complacería editar o responder si deja un comentario.
Esto es un poco extraño y utiliza algunas matemáticas raras que apenas funcionan. Lo primero que hice fue hacer un bucle que siempre terminaría en O (n) pasos. La forma normal de hacer esto es poner n y -n en pilas opuestas y agregar uno a cada uno hasta que uno llegue a cero, sin embargo lo hice de una manera un poco más extraña. En mi método pongo un contador debajo de la entrada y cada paso que incremente el contador lo agrego a n y volteo el signo de n .
Veamos un ejemplo. Di n = 7
No lo probaré aquí, pero esto siempre terminará para cualquier entrada y lo hará en aproximadamente 2n pasos. De hecho, terminará en 2n pasos si n es positivo y 2n-1 pasos si n es negativo. Puedes probar eso aquí .
Ahora tenemos alrededor de 2n pasos en nuestro ciclo, ¿cómo multiplicamos por n ? Bueno, aquí tienes un poco de magia matemática. Esto es lo que hacemos: hacemos un acumulador, en cada paso del proceso agregamos la segunda entrada ( m ) al acumulador y volteamos el signo de ambos, luego empujamos el total sobre todos los bucles que ocurren, este es el producto.
¿Por qué demonios es ese el caso?
Bueno, veamos un ejemplo y espero que quede claro. En este ejemplo estamos multiplicando 5 por 3 , mostraré solo los valores importantes
Esperemos que el mecanismo sea evidente aquí. Estamos recorriendo todos los múltiplos de m en orden de sus valores absolutos. A continuación, aviso de que el 2n º plazo es siempre m * n y el término antes siempre * -m n . Esto hace que nuestro bucle se alinee perfectamente con los resultados que queremos. Un poco de una feliz coincidencia;)
fuente
Dyalog APL , 1 byte
×
toma un número a la izquierda y uno a la derecha×
... o incluso múltiples números a la izquierda o a la derecha o en ambos lados×/
multiplica todos los números en una lista×/¨
multiplica los pares en una lista dada×/∊
mulitplies todos los números en una matrizEsto se aplica a todas las funciones aritméticas, matrices de todos los tamaños y rangos, y números de todos los tipos de datos.
fuente
R, 3 bytes
Esta es una función que toma exactamente dos argumentos. Corre como
'*'(a,b)
.Vea también
prod
qué hace lo mismo pero puede tomar una cantidad arbitraria de argumentos.fuente
'*'
.ArnoldC , 152 bytes
Pruébalo en línea!
fuente
Hexagonía , 9 bytes.
Pruébalo en línea!
Esto es realmente bastante sencillo. Aquí está la versión desplegada:
El
/
solo redirige el flujo de control a la segunda línea para guardar bytes en la tercera. Eso reduce el código a este programa lineal:Este código lineal por sí solo sería una solución válida si la entrada se limitara a números estrictamente positivos, pero debido a la posibilidad de resultados no positivos, no se garantiza que termine.
El programa hace uso de tres bordes de memoria en forma de Y:
El puntero de memoria comienza en el borde
A
apuntando hacia el centro.Realicé una búsqueda de fuerza bruta para soluciones de 7 bytes (es decir, las que encajan en la longitud lateral 2), y si no cometí un error (o hay una solución de ocupado-castor que lleva mucho tiempo completar, que dudo) entonces no existe una solución de 7 bytes. Puede haber una solución de 8 bytes (por ejemplo, reutilizando
?
o usando solo un comando de redirección en lugar de dos/
), pero eso está más allá de lo que puede hacer mi búsqueda de fuerza bruta, y todavía no he encontrado una a mano.fuente
Piet , 16 bytes
Intérprete en línea disponible aquí.
Explicación
Para ejecutar, pegue el código anterior en el cuadro de texto en el lado derecho de la página vinculada. A continuación se muestra una representación gráfica de este código con el tamaño de codel 31. La cuadrícula es para facilitar la lectura y puede interferir con los intérpretes tradicionales de Piet.
El código se ejecuta linealmente de izquierda a derecha, yendo a lo largo de la parte superior de la imagen hasta el primer bloque verde, donde el flujo del programa se mueve a la fila central de códeles. El códec blanco solitario blanco es necesario para el flujo del programa. Podría reemplazarse con un códec de cualquier color que no sea verde o azul oscuro, pero he elegido el blanco por legibilidad.
Si cree que el texto no es la mejor manera de representar un programa de Piet o tiene un problema con el tamaño de bytes de los programas de Piet en general, deje que su opinión sea conocida en la discusión sobre meta .
fuente
BitCycle
-U
, 68 bytesPruébalo en línea!
Multiplicar dos números no es un problema trivial en BitCycle, ¡especialmente cuando los signos deben manejarse! Este es mi segundo intento; el primero (esencialmente el mismo algoritmo, diseño diferente) tenía 81 bytes, por lo que es muy posible que este también se acorte.
El programa toma los dos números como argumentos de línea de comandos y genera salidas en stdout. La
-U
bandera es para convertir los números decimales a unario con signo , ya que BitCycle solo sabe de 0 y 1.Explicación
Esta explicación asume que comprende los conceptos básicos de BitCycle (consulte Esolangs o el archivo Léame de GitHub). Basaré mi explicación en esta versión sin golf, que se ve aquí calculando los
-2
tiempos3
:Visión general
Los números unarios con signo consisten en el signo (
0
para no positivo, vacío para positivo) seguido de la magnitud (un número de1
s igual al valor absoluto del número). Para multiplicar dos de ellos, necesitamos XOR los signos (salida a0
si exactamente uno de ellos es0
, o nada si ambos o ninguno lo son) y luego multiplicar las magnitudes (y generar esa cantidad1
s). Lograremos la multiplicación mediante la suma repetida.Bits de signo
A partir de las dos fuentes
?
, separamos los signos de las magnitudes usando+
.0
s (bits de signo) giran a la izquierda y se dirigen a lo largo de la fila superior, mientras que1
s (magnitudes) giran a la derecha y terminan en los dosB
colectores.La sección que maneja los signos se ve así:
Si ambos números no son positivos, entran dos
0
bits desde la parte superiorv
. El primero se refleja en la parte superior\
, se envía hacia el sur y se refleja en el/
. Mientras tanto, el segundo bit pasa a través de la parte superior desactivada\
y se refleja en la parte inferior\
. Los dos bits se cruzan, van directamente a través de los divisores ahora desactivados en la fila inferior y salen del campo de juego.Si solo uno de los números no es positivo, uno
0
viene desde arriba. Salta alrededor de los tres divisores y termina yendo hacia el norte nuevamente, hasta que golpea elv
y es enviado nuevamente al sur. Esta vez, pasa a través de los divisores desactivados y llega al<
, que lo envía al fregadero!
.Bucles para almacenar las magnitudes.
La magnitud del primer número va al
B
colector en esta sección:Antes de que se
B
abra el recopilador, elA
recopilador libera el sencillo0
que se colocó en él, que luego pasa al final de la colaB
. Lo usaremos como un valor de bandera para terminar el ciclo cuando todos los1
bitsB
hayan desaparecido.Cada vez que se
B
abren los colectores, el\
divisor despega el primer bit de la cola y lo envía a la lógica de procesamiento en el medio. El resto de los bits entranC
, y cuando losC
colectores se abren, se envían nuevamenteB
.La magnitud del segundo número va al
B
colector en esta sección:Cuando se
B
abren los colectores, las brocas van a la parte inferior del dupneg~
. Los1
bits originales giran a la derecha y se envían al oeste a la lógica de procesamiento en el medio. Las copias negadas0
giran a la izquierda e inmediatamente golpean otro dupneg. Aquí los0
s giran a la derecha y salen del campo de juego, mientras que los (ahora doblemente) negados1
giran a la izquierda y son enviados aC
. Cuando seC
abre, vuelven aB
.Adición repetida
La lógica de procesamiento central es esta parte:
Los bits de ambos bucles (uno desde el lado occidental y todo desde el lado este) se envían al sur hacia el interruptor
=
. El tiempo tiene que establecerse para que el bit del bucle occidental llegue primero. Si es a1
, el conmutador cambia a}
, enviando los siguientes bits hacia el este en el sumidero!
para su salida. Una vez que todos los1
s se han ido, obtenemos el0
, que cambia el interruptor a{
. Esto envía los siguientes bits al@
, que termina el programa. En resumen, sacamos la magnitud (unaria) del segundo número tantas veces como haya1
s en la magnitud (unaria) del primer número.fuente
Python 3 , 11 bytes
Pruébalo en línea!
También funciona para enteros
2**32
en Python 2.fuente
Java 8,
109 bytesPruébalo aquí
Java 7, 31 bytes
Pruébalo aquí
Como programa completo (
9990 bytes) :Pruébalo aquí
fuente
*
instaurado+
.a,b
en la expresión lambda.Pyth, 2 bytes
Pruébalo aquí!
La evaluación automática de Pyth se interpone aquí. Para evitarlo, estoy usando una evaluación explícita para uno de los argumentos
fuente
TI-Basic, 2 bytes
Muy sencillo
fuente
Ans
No es un método de E / S permitido .PHP, 21 bytes
toma datos de los argumentos de la línea de comandos. También funciona con carrozas.
fuente
Retina ,
3935 bytesGracias a Leo por dejarme usar una idea suya que terminó ahorrando 4 bytes.
La entrada está separada por salto de línea.
Pruébalo en línea! (Conjunto de pruebas separadas por espacios para mayor comodidad).
Explicación
Las dos primeras etapas imprimen un signo menos si exactamente una de las dos entradas es negativa. Lo hacen sin cambiar realmente la entrada. Esto se hace agrupándolos en la segunda etapa con
)
y convirtiéndolos en una ejecución en seco con*
. La\
opción en la segunda etapa evita la impresión de un salto de línea final.Primero, eliminamos todo excepto los signos menos.
Luego cancelamos los signos menos si quedan dos de ellos.
Ahora convertimos cada línea a la representación unaria de su valor absoluto. Esto eliminará el signo menos porque
$*
solo busca el primer número no negativo en la coincidencia (es decir, no conoce los signos menos y los ignora).La primera línea se convierte en
_
, haciendo coincidir los1
s individuales siempre que sean adyacentes a la coincidencia anterior (por lo tanto, no podemos hacer coincidir los1
s en la segunda línea, porque el salto de línea rompe esta cadena).Esto realiza la multiplicación real. Reemplazamos cada uno
_
(en la primera línea), así como toda la segunda línea, todo después ese partido. Por_
lo tanto, las coincidencias incluirán toda la segunda línea (multiplicándola por el número de0
s en la primera línea), y la segunda línea se eliminará porque no hay nada después de esa coincidencia. Por supuesto, el resultado también incluirá algo de basura en forma de_
s y avances de línea, pero eso no importará.Terminamos simplemente contando el número de
1
s en el resultado.fuente
MATLAB,
54 bytesdot
toma el producto escalar de dos vectores de igual longitud. Si lo alimentamos con dos escalares, simplemente multiplicará los dos números.prod
toma el producto de los valores en todas las filas de cada columna de una matriz. Si la matriz es unidimensional (es decir, un vector), entonces actúa a lo largo de la dimensión no singleton, tomando el producto de todos los elementos en el vector.dot
es un byte más corto que elprod
que es un byte más corto que el incorporado aún más obviotimes
.Llámalo como tal:
fuente
PigeonScript , 1 byte
Explicación:
*
mira a la pila para ver si hay algo allí. Si no, solicita entradas y multiplica las entradas juntasfuente
Perl 6 , 4 bytes
Este es solo el operador de multiplicación infijo ordinario
*
, expresado como una función ordinaria. Como beneficio adicional, si se le da un número, devuelve ese número, y si no se le da ningún número, devuelve1
la identidad multiplicativa.fuente
*×*
> <>, 5 bytes
Toma la entrada como un carácter ascii, emite un número.
Explicación:
También podrías hacer
Pero siento que mi solución es muuuy más fresca.
Otra posibilidad es soltar el punto y coma, lo que daría como resultado que el puntero rebote en el espejo, presione el comando de impresión y arroje un error ya que la pila está vacía.
fuente
Código de máquina Intel 8080 , MITS Altair 8800 , 28 bytes
Esto implementa la multiplicación binaria en la CPU Intel 8080 (c. 1974) que no tenía instrucciones de multiplicación o división. Las entradas son valores de 8 bits y el producto es un valor de 16 bits devuelto en
BC
par de registros.Aquí está el código de la máquina junto con las instrucciones paso a paso para cargar el programa en un Altair 8800 usando los interruptores del panel frontal.
Pruébalo en línea!
Si ha ingresado todo correctamente, en el cajón de estado de la máquina en el simulador, su contenido de RAM se verá así:
Entrada
Multiplicador en
C
registro y multiplicando enD
. El stock de Altair no tieneSTDIN
entrada, por lo que solo se realiza mediante interruptores del panel frontal.Salida
El resultado se muestra en las luces
D7
-D0
(fila superior derecha) en binario.5 x 16 = 80 (0101 0000)
4 x 5 = 20 (0001 0100)
7 x 9 = 63 (0011 1111)
8 x -9 = -72 (1011 1000)
Nota de compatibilidad: esto también debería ejecutarse en el IMSAI 8080 , aunque actualmente no se ha probado.
fuente
C #, 10 bytes
Es solo una simple multiplicación.
fuente
Gelatina , 1 byte
Pruébalo en línea!
Presentación obligatoria de gelatina.
fuente
Clojure, 1 byte
: P Como beneficio adicional, esto funciona en cualquier número de argumentos:
Curiosamente, puede obtener fácilmente su código fuente:
fuente
Owk , 11 bytes
Esto se puede asignar a una función como esta:
y llamado así:
fuente