Generar series E de números preferidos

8

Las resistencias y otros componentes electrónicos se fabrican típicamente con los valores que se ajustan a una de las E-series de números preferidos . IEC 60063 define la siguiente serie E:

E6:

10 15 22 33 47 68

E12:

10 12 15 18 22 27 33 39 47 56 68 82

E24:

10 11 12 13 15 16 18 20 22 24 27 30 33 36 39 43 47 51 56 62 68 75 82 91

E48:

10010511011512112713314401471561661691781871962052022262327249261274287301 316 332348 365383402 422 442 464 487 511 536 562 590 619 649 681 715 750 787 825 866 909 953

E96:

100 102 105 107 110 113 115 118 121 124 127 130 133 137 140 143 147 150 154 158 162 165 169 174 178 182 187 191 196 200 205 210 215 221 226 232 237 243 249 255 261 267 274 280 287 294 301 309 316 324 332 340 348 357 365 374 383 392 402 412 422 432 442 453 464 475 487 499 511 523 536 549 562 576 590 604 619 634 649 665 681 698 715 732 750 768 787 806 825 845 866 887 909 931 953 976

E192:

100 101 102 104 105 106 107 109 110 111 113 114 115 117 118 120 121 123 124 126 127 129 130 132 133 135 137 138 140 142 143 145 147 149 150 152 154 156 158 160 162 164 165 167 169 172 174 176 178 180 182 184 187 189 191 193 196 198 200 203 205 208 210 213 215 218 221 223 226 229 232 234 237 240 243 246 249 252 255 258 261 264 267 271 274 277 280 284 287 291 294 298 301 305 309 312 316 320 324 328 332 336 340 344 348 352 357 361 365 370 374 379 383 388 392 397 402 407 412 417 422 427 432 437 442 448 453 459 464 470 475 481 487 493 499 505 511 517 523 530 536 542 549 556 562 569 576 583 590 597 604 612 619 626 634 642 649 657 665 673 681 690 698 706 715 723 732 741 750 759 768 777 787 796 806 816 825 835 845 856 866 876 887 898 909 920 931 942 953 965 976 988

Dado un solo entero de entrada del conjunto {6, 12, 24, 48, 96, 192}, emite la serie E correspondiente, en orden, que contiene exactamente los números que se muestran arriba para la serie dada.

  • La salida puede estar en cualquier formato de lista, matriz, etc. que sea apropiado para su idioma.
  • Base 10 enteros solamente.
  • las incorporaciones que implementan específicamente estas series no están permitidas.
Trauma digital
fuente

Respuestas:

4

Python 3, 97 bytes

lambda n:[round(10**(i/n+2-(n<25)))+((.4<i/n<.67)-(.9<i/n<.92))*(n<25)+(i==185)for i in range(n)]

Los valores de salida escalados del 1 al 10 están bien aproximados por una interpolación exponencial:

10**(i/n)

Multiplicar por 10 para 6, 12, 24y 100 para 48, 96, 192luego redondear al entero más cercano

round(10**(i/n+2-(n<25)))

da las respuestas correctas para todos menos 16 valores, lo que da errores de ± 1.

n   i   est val  diff 
6   3   32  33  -1
6   4   46  47  -1
12  5   26  27  -1
12  6   32  33  -1
12  7   38  39  -1
12  8   46  47  -1
12  11  83  82  1
24  10  26  27  -1
24  11  29  30  -1
24  12  32  33  -1
24  13  35  36  -1
24  14  38  39  -1
24  15  42  43  -1
24  16  46  47  -1
24  22  83  82  1
192 185 919 920 -1

Para n<=24, la mayoría de estos errores son para valores de entrada en el intervalo 10/24<=i/n<=6/24. Hay otro error para el n==24que se filtra n==12, y un error para n==192. Falsificamos estos errores sumando o restando 1a la estimación.

xnor
fuente
1

Mathematica, 904 879 bytes

If[#>4!,{100,101,102,104,105,106,107,109,110,111,113,114,115,117,118,120,121,123,124,126,127,129,130,132,133,135,137,138,140,142,143,145,147,149,150,152,154,156,158,160,162,164,165,167,169,172,174,176,178,180,182,184,187,189,191,193,196,198,200,203,205,208,210,213,215,218,221,223,226,229,232,234,237,240,243,246,249,252,255,258,261,264,267,271,274,277,280,284,287,291,294,298,301,305,309,312,316,320,324,328,332,336,340,344,348,352,357,361,365,370,374,379,383,388,392,397,402,407,412,417,422,427,432,437,442,448,453,459,464,470,475,481,487,493,499,505,511,517,523,530,536,542,549,556,562,569,576,583,590,597,604,612,619,626,634,642,649,657,665,673,681,690,698,706,715,723,732,741,750,759,768,777,787,796,806,816,825,835,845,856,866,876,887,898,909,920,931,942,953,965,976,988}[[;;;;192/#]],{10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91},[[;;;;24/#]]]&

Versión de solo lógica sin lista masiva sin golf :

If[#>4!,{E192}[[;;;;192/#]],{E24}[[;;;;24/#]]]&

Casi versión, 60 bytes

Floor[Table[If[#>4!,100,10]Surd[10,#]^x,{x,0,#}]+.5][[;;-2]]

Preciso dentro de ± 1

CalculadoraFeline
fuente
Estoy bastante seguro de que puedes hacer mucho mejor que eso generando matemáticamente la lista. Pista: raíz 192 de 10.
Digital Trauma
No exactamente. :( Eso da 920 cuando es 919 para la entrada 192.
CalculatorFeline
Entonces, ¿hay algún tipo de "One True Formatting" que debe usarse en todas partes? (Lo siento, pero ¿por qué la edición?)
CalculatorFeline
@CatsAreFluffy h2 generalmente se prefiere a h1, aunque no todos siguen esa regla; la justificación es que h1 debería ser lo más importante en una página. Por cierto, creo que Mathemeatica no sería un mal nombre para un nuevo lenguaje de golf ...
lirtosiast