Crea una matriz con números repetidos

19

Desafío

Su tarea en esta pregunta es escribir un programa o una función con nombre que tome un entero positivo n(mayor que 0) como entrada a través de STDIN, ARGV o argumentos de función y genere una matriz a través de STDOUT o el valor devuelto por la función.

¿Suena bastante simple? Ahora estas son las reglas

  • La matriz solo contendrá enteros de 1an
  • Cada entero de 1a ndebe repetirse xveces donde xes el valor de cada entero.

Por ejemplo:

Entrada:

5

Salida:

[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

La matriz puede o no estar ordenada.

Este es el por lo que el ganador es el código más corto en bytes.

Prima

Multiplique su puntaje por 0.5si no hay dos enteros adyacentes en su matriz de salida iguales.

Por ejemplo n = 5, una de esas configuraciones sería

[5, 4, 5, 4, 3, 4, 5, 2, 5, 3, 1, 2, 3, 4, 5]
Optimizador
fuente

Respuestas:

6

APL, 4 caracteres

/⍨⍳⎕

Cómo funciona:

lee la entrada del usuario. En cuanto a la salida, APL imprime por defecto el resultado de cada línea.

⍳nson los enteros de 1 a n. Ejemplo:⍳3←→ 1 2 3

/significa replicar . Cada elemento del argumento derecho se repite tantas veces como lo especifique su elemento correspondiente del argumento izquierdo. Ejemplo:2 0 3/'ABC'←→ 'AACCC'

es el operador de viaje . Cuando aparece a la derecha de una función, modifica su comportamiento, por lo que intercambia los argumentos (por lo A f⍨ B ←→ B f Atanto, "conmuta") o proporciona el mismo argumento en ambos lados ( f⍨ A ←→ A f Auna "selfie"). La última forma se usa en esta solución.


Prima:

6-∊⌽⍳¨⍳⎕(8 caracteres, gracias @ phil-h )

⍳5(Iota cinco) es 1 2 3 4 5.

⍳¨ ⍳5(iota cada iota cinco) es (,1)(1 2)(1 2 3)(1 2 3 4)(1 2 3 4 5)un vector de vectores. Cada ( ¨) es un operador, toma una función a la izquierda y la aplica a cada elemento de la matriz a la derecha.

invierte la matriz, así que obtenemos (1 2 3 4 5)(1 2 3 4)(1 2 3)(1 2)(,1).

es alistarse (también conocido como aplanar ). Atraviesa recursivamente el argumento y le devuelve los escalares simples como un vector.

ngn
fuente
¿Qué tal una expresión de 4 caracteres ? /⍨⍳n
ngn
Como desee, señor, he actualizado el texto. ¿Pero seguramente su objeción debe aplicarse a otras soluciones que no están envueltas en funciones?
ngn
3
Dyalog APL viene en dos sabores: "Clásico" y "Unicode". La versión clásica ha existido durante décadas, desde antes de que apareciera el estándar Unicode, y utiliza una codificación byte por carácter personalizada para el conjunto de caracteres APL. Todavía es compatible, aunque se desaconseja su uso. Entonces, me gustaría usar esto como una excusa. En términos más generales, creo que en el golf deberíamos contar caracteres, no bytes. El hecho de que los puntos de código más bajos en Unicode estén ocupados por el ASCII centrado en inglés es un accidente histórico que no debería importar hoy. Curiosamente, APL fue concebido antes de que saliera ASCII.
ngn
3
@ngn contar caracteres no es una buena idea , ya que las respuestas generalmente se convertirán en decodificadores de sopa de letras. Los caracteres APL se cuentan como bytes porque existe esa codificación; Esto está bien establecido en este sitio. Esto funciona con cualquier codificación de bytes que existía antes de la pregunta.
FryAmTheEggman
1
@ngn: ¿Puedes explicar tu respuesta extra? Porque se puede hacer a través de: 5 4 3 2 1 5 4 3 2 5 4 3 5 4 5 o 6 menos cada uno de 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1, lo que parece que no está lejos de tu respuesta inicial.
Phil H
11

Ruby (recursivo), 41 bytes * 0.5 = 20.5

def n(n,i=1);i>n ?[]:n(n,i+1)+[*i..n];end

O usando una lambda (según lo recomendado por histocrat y Ventero): 34 bytes * 0.5 = 17

r=->n,i=n{i>0?[*i..n]+r[n,i-1]:[]}

(llamar usando r[argument])

AlexRath
fuente
2
Esa es una solución realmente genial. Puede guardar algunos bytes convirtiéndolo en lambda en lugar de método ( n=->x,i=1{...n[x,i+1]...) y algunos más con [*i..n].
histocrat
1
Al invertir la lógica, puede eliminar el espacio en blanco en el ternario:r=->n,i=n{i>0?[*i..n]+r[n,i-1]:[]}
Ventero
11

Pyth , 9 bytes * 0.5 = 4.5

smrhQhdUQ

Con la ayuda de @FryAmTheEggman

Pruébalo en línea.


Explicación

s             reduce + on list
 m            map
  rhQhd       lambda d: reversed(range(d+1, Q+1)), over
       UQ     range(Q)

donde Qesta la entrada

Sp3000
fuente
55
No debería
haberte
8

Haskell, 31 caracteres = 15.5 puntaje

f n=[y|x<-[n,n-1..1],y<-[x..n]]

27 personajes sin el bono

f n=[x|x<-[1..n],_<-[1..x]]

Golpeado por el orgulloso Haskeller

John Dvorak
fuente
Su primera solución no es correcta. Una posible solución esg n = [y|x<-[n,n-1..1],y<-[x..n]]
karakfa
@karakfa oops: - / y gracias por la solución
John Dvorak
Mi respuesta de Haskell es solo un poco más baja que la tuya
orgulloso Haskeller
¿Debo vincularlo desde mi solución para promocionarlo?
John Dvorak
@ JanDvorak Me gustaría, en realidad ...
orgulloso haskeller
7

C, 22 = 44 bytes * 0.5

La función htoma dos parámetros. El primero es un nint especificador . El segundo es unint* que es el búfer de salida.

h(n,o)int*o;{for(n&&h(~-n,o+=n);*--o=n--;);}

Programa de prueba

main(){
int wow[999],*i;
memset(wow,0,sizeof(wow));
h(6, wow);
for(i=wow;*i;i++)printf("%d ", *i);
}
Feersum
fuente
No lo entiendo ¿Por favor explique?
bacchusbeale
@bacchusbeale Ok .. Escribe recursivamente secuencias descendentes de n a 0. Las secuencias más cortas se escriben antes, a un nivel más profundo de recursión. Si el argumento n es 0, entonces n es falsey, por lo que no hay recursividad y solo se escribe un 0, que sirve para marcar el final de la matriz.
feersum
7

Pyth - 15 10 * .5 = 5

smr-QdhQUQ

Pruébalo en línea.

Espera entrada en stdin. Algoritmo descubierto independientemente. Gracias @ Sp3000 por ayudarme a pegar la última Q allí: P ¿También, ironía? XD

Explicación:

Q=eval(input())       : implicit
s                     : The sum of...
 m      UQ            : map(...,range(Q))
  r-QdhQ              : range(Q-d,Q+1)
FryAmTheEggman
fuente
2
Buena solución ¿Alguna vez hay una situación en la que Pyth no ganaría el código de golf? :)
Alex A.
2
@Alex Dependiendo de la naturaleza del problema, apilar idiomas basados golf (Golfscript, Cjam) lata de crema ella, sino que también puede perder a la materia de la biblioteca ( tos fiesta de la tos );)
FryAmTheEggman
6

CJam, 12 15 bytes * 0.5 = 7.5

li_,f{),f-W%~}`

Este es un programa completo de STDIN a STDOUT. Concatena sufijos crecientes de la1 ... n rango, lo que garantiza que no haya dos números adyacentes idénticos.

Pruébalo aquí.

Martin Ender
fuente
6

Python 2, 53 bytes * 0.5 = 26.5

i=n=input()
x=[]
while i:x+=range(i,n+1);i-=1
print x

La idea de @ VisualMelon tomó prestada descaradamente

Sp3000
fuente
6

Haskell, 34 bytes * 0.5 = 17

0%n=[]
i%n=[i..n]++(i-1)%n
g n=n%n

Es la primera vez que uso Haskell para jugar al golf. Llamada con g <number>.

Sp3000
fuente
5

Bash + coreutils, 28/2 = 14

Robando descaradamente la idea de @ pgy y jugando al golf:

seq -f"seq %g $1" $1 -1 1|sh

Golpe puro (sin coreutils), 30/2 = 15

Eva, escape y expansión del infierno:

eval eval echo \\{{$1..1}..$1}
Trauma digital
fuente
5

GolfScript (14 bytes * 0.5 = puntaje 7)

 ~:x,{~x),>~}%`

Demostración en línea

Creo que esto es probablemente similar a algunas respuestas existentes, ya que acumula la matriz concat( [n], [n-1, n], [n-2, n-1, n], ..., [1, 2, ..., n] )

Lamentablemente, no pude jugar más al golf, posiblemente el más elegante:

~:x]{{,{x\-}/}%}2*`

que pone la entrada xen una matriz y luego se aplica dos veces {,{x\-}/}%, que asigna cada elemento de una matriz a una cuenta regresiva de esa cantidad de elementos x.

Peter Taylor
fuente
5

C # - 81 (161bytes * 0.5)

Trabajo simple en C #, es de esperar que obtenga el bono de números sin neibouring. Lee un int desde stdin, escribe una matriz como el ejemplo en stdout.

class P{static void Main(){int n=int.Parse(System.Console.ReadLine()),m=n-1,i;var R="["+n;for(;m-->0;)for(i=m;i++<n;)R+=", "+i;System.Console.WriteLine(R+"]");}}

Más legible:

class P
{
    static void Main()
    {
        int n=int.Parse(System.Console.ReadLine()),m=n-1,i;
        var R="["+n;
        for(;m-->0;)
            for(i=m;i++<n;)
                R+=", "+i;
        System.Console.WriteLine(R+"]");
    }
}

Ejemplos de salida:

n = 5
[5, 4, 5, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5]
VisualMelon
fuente
Realmente estoy tratando de encontrar una solución C # más corta, pero parece que no puedo lograrlo ... bien hecho
Brandon
1
@MarkKnol System.Consolees estático, no puede asignarlo a una variable, pero en C # 6 o lo que sea siguiente, podrá hacer using System.Console;( using System;no paga en este caso), no estoy seguro de cómo me siento acerca de esta función, lo hará afectar muchas preguntas antiguas de golf precisamente por este motivo;)
VisualMelon
1
@IchabodClay empeora, using C=System.Consoleahorra 3 bytes y es probablemente lo que @MarkKnol quiso decir (¡perdón!), Vergonzosa negligencia de mi parte.
VisualMelon
1
Además, de acuerdo con las reglas, podría tener el método en sí en lugar de crear un programa completo. Algo como ... esto . (114 bytes con espacios en blanco y tal eliminado. 57 bytes con bonificación.)
Ichabod Clay
1
@IchabodClay de hecho; Prefiero enviar programas completos a las funciones, no es una buena razón, IO solo parece ser parte de la diversión (tampoco tiendo a usar argv). ¡Siéntase libre de publicar una mejor respuesta de puntuación sin estas tontas restricciones!
VisualMelon
4

JavaScript, ES6, 41 bytes

f=i=>[...Array(i).fill(i),...i?f(--i):[]]

Esto crea una función fque se puede llamar como f(6)y devuelve la matriz requerida.

Esto utiliza un enfoque recursivo, donde cada iteración crea una matriz de ielementos todos valorados iy concatena una matriz devuelta f(i-1)con la condición de detención de i==0.

Funciona en la última versión de Firefox.

Optimizador
fuente
4

Haskell, 14 = 28 bytes / 2

f n=n:[1..n-1]>>= \r->[r..n]

salida de ejemplo:

>f 5
[5,1,2,3,4,5,2,3,4,5,3,4,5,4,5]

24 bytes sin el bono:

f n=[1..n]>>= \r->[r..n]
orgulloso Haskeller
fuente
podría =<<ayudar a evitar el espacio en blanco? Siento que podría, pero me sorprendería si no lo hubieras considerado.
John Dvorak
@ JanDvorak Si hubiera usado =<<, necesitaría paréntesis para el lambda
orgulloso Haskeller
Estoy confundido sobre cuándo exactamente las lambdas necesitan paréntesis. ¿El encabezado lambda tiene la misma fijación que >>=?
John Dvorak
@ JanDvorak No tienen fijeza; No estoy seguro de cómo es exacto esta regla es, pero lambdas sólo puede aparecer cuando los operadores no pueden (sin tener en cuenta las secciones): después de (, [, =, ,, después de todos los operadores, y similares
haskeller orgullo
¿Supongo que ni las lambdas ni los operadores pueden aparecer como patrones? let \x->y = (2+) in (x,y)Parece un poco imposible.
John Dvorak
4

Haxe , 53 bytes

function l(v)return[for(i in 0...v)for(j in 0...i)i];

Funciona con l (6); debido a la comprensión de la matriz.
Prueba en línea http://try.haxe.org/#741f9

Mark Knol
fuente
3

vba, 76 * 0.5 = 38

Sub i(q)
For Z=1 To q:For x=q To Z Step -1:Debug.?x;",";:Next:Next
End Sub
SeanC
fuente
puede perder 1 (0.5, técnicamente) byte (s) al condensar For Z=1 ToaFor Z=1To
Taylor Scott
también puede condensar Next:NextaNext x,Z
Taylor Scott
2

R, 44 * .5 = 22

f=function(n){r=0;for(i in 1:n)r=c(r,n:i);r}

Una prueba rápida

> f(1)
[1] 1
> f(2)
[1] 2 1 2
> f(3)
[1] 3 2 1 3 2 3
> f(4)
 [1] 4 3 2 1 4 3 2 4 3 4
MickyT
fuente
Qué ? No TSQL?
Optimizador
@Optimizer quizás más tarde :)
MickyT
2

JavaScript, ES6, 66 bytes * 0.5 = 33

f=i=>(g=n=>[...Array(n).fill().map((v,x)=>i-x),...n?g(n-1):[]])(i)

Partiendo del enfoque recursivo de Optimizer , podemos construir series descendentes de longitud decreciente, como [4,3,2,1, 4,3,2, 4,3, 4].

En lugar de Array(i).fill(i)hacer undefinedsubconjuntos del mismo valor con , hacemos subconjuntos llenos de la longitud apropiada con Array(n).fill()y luego cambiamos los valores a una ejecución descendente usando .map((v,x)=>i-x). Además, definimos y recurrimos sobre una función interna g; la función externa fexiste solo para almacenar el valor de iwhile grecurses.

apsillers
fuente
2

T-SQL, 176 * 0.5 = 88

Como parecía perderse el T-SQL @Optimizer, aquí está en toda su gloria detallada :).

Un par de opciones de funciones, una función escalar y una tabla de valores en línea. La función escalar usa bucles while para recurrir y devuelve una cadena de números, donde la función Valor de tabla en línea usa un CTE recursivo para una secuencia y devuelve una tabla. Por supuesto, estos nunca serán competitivos, por lo que no he pasado mucho tiempo jugando al golf.

Función de valor de tabla en línea, 176 * .5

CREATE FUNCTION F(@ INT)RETURNS TABLE RETURN WITH R AS(SELECT @ N UNION ALL SELECT N-1FROM R WHERE N>0)SELECT B.N FROM R CROSS APPLY(SELECT TOP(R.N)N FROM R A ORDER BY N DESC)B

Llamado de la siguiente manera

SELECT * FROM dbo.F(5)

Ejemplo de SQLFiddle

Función escalar, 220 * .5

CREATE FUNCTION G(@ INT)RETURNS VARCHAR(MAX)AS BEGIN DECLARE @S VARCHAR(MAX),@N INT=1,@I INT,@C INT WHILE @N<=@ BEGIN SELECT @I=@N,@C=@ WHILE @C>=@I BEGIN SELECT @S=CONCAT(@S+',',@C),@C-=1 END SET @N+=1 END RETURN @S END

Llamado de la siguiente manera

SELECT dbo.G(5)

Ejemplo de SQLFiddle

MickyT
fuente
2

Mathematica, 34 * 0.5 = 17

f=Join@@Table[x,{y,#},{x,#,y,-1}]&
alephalpha
fuente
2

perl, 26 bytes

for(1..$n){print"$_ "x$_;}
michael501
fuente
1
Por favor publique su puntaje. Además, dado que se trata de código de golf, puede guardar bytes eliminando los espacios adicionales y la definición de $n.
Alex A.
Esto no funciona para mí en Perl 6.
Alex A.
@Alex, cuál es el error, funciona bajo 5.10
michael501
Unable to parse postcircumfix:sym<{ }>, couldn't find final '}' at line 3. Probado en ideone.com.
Alex A.
@Alex, intente esto: C: \ Windows \ system32> perl -e "$ n = 5; for (1 .. $ n) {print qq ($ _) x $ _;};" 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
michael501
2

JavaScript (legible), 131 bytes

Soy nuevo en Code Golf, así que este no es el mejor

function f(n) {
    var arr = [];
    for(var i = 1; i <= n; i++) {
        for(var j = 0; j < i; j++) {
            arr.push(i);
        }
    }
    return arr;
}

JavaScript (menos legible), 87 bytes

Minified usando jscompress.com

function f(e){var t=[];for(var n=1;n<=e;n++){for(var r=0;r<n;r++){t.push(n)}}return t}
SirPython
fuente
2

TECO, 25 bytes * 0.5 = 12.5

a\+1%a%b<qauc-1%b<-1%c=>>

Lo anterior apenas supera la versión sin bono de 13 bytes:

a\%a<%b<qb=>>
Feersum
fuente
2

C #, 114 99 * 0.5 = 49.5 bytes

(Con un poco de ayuda de la respuesta de VisualMelon) Editar: y el comentario de James Webster

int[]A(int n){int m=n,i,c=0;var a=new int[n*(n+1)/2];while(m-->0)for(i=m;i++<n;)a[c++]=i;return a;}

Sin golf:

int[] FooBar(int n)
{
    int altCounter = n, i, arrayCounter = 0;
    var returnArray = new int[n * (n + 1) / 2];
    while(m-->0)
        for(i = altCounter; i++ < n; )
            returnArray[arrayCounter++]=i;
    return returnArray;
}

Hay una versión insegura que tomé descaradamente de la respuesta C de feersum, pero no estoy 100% seguro de que se ajuste a las reglas, ya que debe asignar la memoria antes de llamar al método.

C # (inseguro), 82 * 0.5 = 41 bytes

unsafe void A(int n,int*p){int*z=p;int m=n,i;while(m-->0)for(i=m;i++<n;)z++[0]=i;}

Llamado de la siguiente manera:

int n = 5, length = (int)((n / 2f) * (n + 1));
int* stuff = stackalloc int[length];
int[] stuffArray = new int[length];
A(n, stuff);
System.Runtime.InteropServices.Marshal.Copy(new IntPtr(stuffArray), stuffArray, 0, stuffArray.Length);
//stuffArray == { 5, 4, 5, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5 }

Según la sugerencia de VisualMelon (¡gracias!), El código inseguro se puede volver a crear con un código seguro que reduce aún más el tamaño. Todavía plantea la pregunta de si la creación de la matriz de resultados finales se puede realizar fuera del método.

C #, 72 * 0.5 = 36 bytes

void A(int n,int[]p){int z=0,m=n,i;while(m-->0)for(i=m;i++<n;)p[z++]=i;}
Arcilla Ichabod
fuente
¡Buen trabajo! Para la versión por asignación, es mucho más barato ir a salvo y pasarlo de int[]inmediato void A(int n,int[]p){int z=0,m=n,i;while(m-->0)for(i=m;i++<n;)p[z++]=i;}- Estoy de acuerdo en que probablemente sea un poco dudoso, con respecto a las reglas;)
VisualMelon
No debería necesitar crear un puntero local para la versión insegura, que corta unos 8bytes. Además, podría estar perdiendo el punto, pero ¿debería ser la última línea del código de llamada inseguro System.Runtime.InteropServices.Marshal.Copy(new IntPtr(stuff), stuffArray, 0, length);?
VisualMelon
@VisualMelon Eso es lo que obtengo por no volver a verificar los nombres de las variables después de cambiarles el nombre. Gracias por el aviso: D. Editó la respuesta para dar cuenta de la versión más corta en su comentario.
Ichabod Clay
Puede cortar un poco la versión segura al incluir la longitud var a=new int[(int)((n/2f)*(n+1))];que creo que se reduce a 109
James Webster
Una vez más reescribiendo el cálculo como:(n*(n+1)/2)
James Webster el
1

C #, 116115 + 33 = 148 bytes

No es el código más corto, pero ... funciona de todos modos: P

int[]l(int m){List<int>i=new List<int>();for(int j=1;j<=m;j++){for(int x=0;x<j;x++){i.Add(j);}}return i.ToArray();}

Requiere esto en la parte superior del archivo (33 bytes):

using System.Collections.Generic;

Versión sin golf:

int[] RepatedNumberList(int m)
{
    List<int> intList = new List<int>();
    for (int j = 1; j <= m; j++)
    {
        for (int x = 0; x < j; x++)
        {
            intList.Add(j);
        }
    }
    return initList.ToArray();
}
ProgramFOX
fuente
1

J, 23 * 0.5 = 11.5

   f=.-;@(<@|.@i."0@>:@i.)
   f 5
5 4 5 3 4 5 2 3 4 5 1 2 3 4 5

J, 11

   f=.#~@i.@>:
   f 5
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
randra
fuente
1
23 * 0.5es 11.5no 10.5.
ProgramFOX
@ProgramFOX buena captura. ¿Vas a editar, o debería? No es una buena razón para rechazar la OMI.
John Dvorak
@ JanDvorak acaba de editarlo. Y no voté en contra, lo voté incluso antes de ver el error.
ProgramFOX
Ahora que se ha solucionado el error, ¿debería la solución de bonificación moverse hacia abajo?
John Dvorak
-1Byte: ¡ f=.-[:;<@|.@i."0@>:@i.haciendo que las puntuaciones sean iguales!
Bolce Bussiere
1

JavaScript (ES6) 29 (58 * 0.5)

Editar eliminar; thx @Optimizer

Q=o=>(m=>{for(n=o,r=[];n>m||++m<(n=o);)r.push(n--)})(0)||r

Prueba en la consola FireFox / FireBug

Q(9)

Salida

[9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 9, 8, 7, 6, 5, 4, 9, 8, 7, 6, 5, 9, 8, 7, 6, 9, 8, 7, 9, 8, 9]

Sin golf

Q=o=>{
  for(m=0,r=[];m<o;++m)
    for(n=o;n>m;)
      r.push(n--);
  return r
}
edc65
fuente
1

ECMAScript6, 67 * 0.5 = 33.5 bytes

f=n=>{a=[],b=0;while(c=n+b,n--){while(c-b)a.push(c--);b++}return a}

Bastante contento con este ... Es aproximadamente una cuarta parte del tamaño de mi original.

f(4) devoluciones:

[ 4, 3, 2, 1, 4, 3, 2, 4, 3, 4 ]

Vieja respuesta:

f=i=>{a=b=Array;while(i)a=a.concat(b.apply(null,b(i)).map(e=>i)),i--;return a}

Esta es mi primera oportunidad en el código de golf ... Todavía quiero obtener ese bono de 0.5x. Cualquier sugerencia es bienvenida!

Llamado con f (n).

binormal
fuente
Debes ser bastante nuevo en JavaScript por sí mismo :). (1) Elimine los corchetes alrededor del argumento d, (2) a=b=c=[]en la parte de declaración, (3) c[a].map(e=>a)(4)b.push(...c)
Optimizer
Hice una versión más corta antes de leer tu comentario, que pondré en mi publicación. Mi experiencia con JS se limita principalmente a la manipulación de DOM / estilo para aplicaciones web simples ... y casi no he usado ninguna de las nuevas funciones de ES6 hasta hoy.
binormal
1

C #, 108 bytes * 0.5 = 54

List<int> f(int n){var r=new List<int>();int m=n-1,i;r.Add(n);for(;m-->0;)for(i=m;i++<n;)r.Add(i);return r;}

¡Gracias a VisualMelon por hacer el trabajo duro! Pensé que trataría de exprimirlo lo más posible.

(114 bytes * 0.5 = 57, si insiste en usar .ToArray () para devolver int [])

Romen
fuente