REtos batch

Iniciado por ELVJop, 23 Abril 2012, 18:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

#50
Runex, Tienes razón, Entonces lo dejamos en un medio-fail, Ya que al menos cumple su propósito xD. (Y los retos son de Batch)
No leiste mi post entero, Bueno decía que seguro que había técnicas mejores y más rápidas, No soy un maestro de los números  :P.

PD: El lenguaje marca la diferencia, Te lo aseguro!
     Si tuvieras una lista de números primos del 1 al 1.000.000, y solo tuvieras que mostrarlos haciendo "FOR /F %%a in (Lista.txt) Do (Echo %%a)" (Sin realizar operaciones ni nada) Ya tardaría lo suyo ya... varios minutos. :xD

Saludos

EDITO: Esto demuestra la velocida (basura) de Batch:
Código (dos) [Seleccionar]
@echo off
Set START=%Time%
FOR /L %%X IN (1,1,1000000) DO (Echo %%X)
Set FINISH=%Time%
Echo %START% ^| %FINISH%
pause







Cita de: Stakewinner00 en 25 Abril 2012, 19:52 PM
solo con bat el primer code los genera lento yo cree este


@echo off
:anteinicio
set /p t=cuantos primos quieres?=
if %t% lss 3 (echo su numero tiene que ser mayor que 2) else (goto seguir)
pause
exit
:seguir
set ee=%random%
if %ee:~-1%==2 goto seguir
if %ee:~-1%==4 goto seguir
if %ee:~-1%==6 goto seguir
if %ee:~-1%==8 goto seguir
if %ee:~-1%==0 goto seguir
echo %ee%
set /a t=t-1
if %t%== 0 (pause) else (goto seguir)


los genera rapido usando solo batch
creo k este code es el mas rapido usando solo batch. XD

Está bueno.

Pero hay que mencionar que ese code es un generador aleatorio :P








Puntoinfinito

Cita de: Runex en 24 Abril 2012, 18:21 PM
//sea N el numeroal quele quieras hallar el numero de digitos
int contador =0 // te dia cuantos digitos tiene tu numero N

while( N>=1 )
{
N=N/10;
contador=contador+1;
}

Ese es el algoritmo para sacarlo :), no lo aplico en batch porque uso debian
Bien, bien :D
¿Te atreves con el Segundo?
¿O  intentas el primero con BATCH?
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

HdM

Buenas.

Cita de: Runex en 25 Abril 2012, 20:01 PM
Elektro no he leido tu mensaje entero, pero no será más fácil dejarse de multiplicaciones, iniciar el bucle for desde 0 hasta el máximo de números primos que tu quieres, y hacer un condicional, que si el resto obtenido de dividirlo por 2 (módulo) es diferente de 0, imprima el número? ya que este será primo.

Un pequeño apunte, ese cálculo indicará si es impar o no, pero no necesariamente que sea primo:

Ejemplos: 11 mod 2 <> 0 Impar y primo   
               33 mod 2 <> 0 Impar pero no primo (es divisible por 11,3)

Saludos.

- Nice to see you again -

ELVJop

Informo edu que por razones que no vienen al caso n o me pude poner en el ordenador mañana sera 99,9 % seguro XD (Hice este post por aburrimiento y ya tiene 1,026 visitas... Si fueran las visitas que tiene mi blog me quedaria flipado :o
El dia 3 de mayo esta cuenta sera borrada.

Runex

Cita de: puntoinfinito en 25 Abril 2012, 21:30 PM
Bien, bien :D
¿Te atreves con el Segundo?
¿O  intentas el primero con BATCH?


Código (dos) [Seleccionar]
echo Introduce numero
set /p numero=
if %numero%>1 && %numero%<10 echo 1 digito
if %numero%>10 && %numero%<100 echo 2 digitos
if %numero%>100 && %numero%<1000 echo 3 digitos
if %numero%>1000 && %numero%<10000 echo 4 digitos
...
Pause>Nul


Esto sería otra soluciíón a tu problema, pudiendo añadir la cantidad de dígitos que tu quieras.

No sé si funcionará porque no lo he podido probar además, yo de batch poca idea tengo  :-\

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

Eleкtro

Cita de: Runex en 28 Abril 2012, 02:13 AM
Código (dos) [Seleccionar]

if %numero%>1 && %numero%<10 echo 1 digito
...
Pause>Nul


No sé si funcionará porque no lo he podido probar además, yo de batch poca idea tengo  :-\


No no se puede hacer una comprobación de multiples condiciones (Bueno, No como se haría en PY u otro xD) en Batch. Además ">" y "&" "&&" tampoco son operadores de comparación.  :P

Pero tampoco ibas muy mal encaminado, Quedaría así:
Código (dos) [Seleccionar]
@Echo OFF

:Loop
set /p numero=Numero ^>
if %numero% LSS 10   (Echo 1 digito)
if %numero% GEQ 10   (If %numero% LSS 100   (echo 2 digitos))
if %numero% GEQ 100  (If %numero% LSS 1000  (echo 3 digitos))
if %numero% GEQ 1000 (If %numero% LSS 10000 (echo 4 digitos))
Goto :Loop


Aunque esta forma es mejor para evitar limitaciones y código...:
Código (dos) [Seleccionar]
@Echo OFF

:Loop
set /p numero=Numero ^>
ECHO %Numero% > "%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A digitos=%%~z? - 3 )
Echo          %numero% tiene %digitos% digitos.
Goto :Loop


Salu2








Puntoinfinito

¡Muy bien!
Mirad yo lo lo hicé de diferente forma:
Citar@ECHO OFF
SET/P"D= Numero:\> "
FOR /F "TOKENS=1,2 DELIMS=.," %%A IN ("%D%") DO (
   CALL:C "%%A" "P.Entera"
   IF "%%B" NEQ "" (CALL:C "%%B" "P.Decimal")
)
Pause>Nul&Exit
:C
   SET/P"=%~1"<NUL>>..Tmp
   FOR %%Z IN ("%CD%\..Tmp") DO (SET/P"=%~2:%%~zZ   "<NUL)
   DEL "..Tmp"
EXIT/B0

¿Sois capaces de pasar la segunda prueba?

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

$Edu$

Cita de: Bulld0z3r en 25 Abril 2012, 22:05 PM
Buenas.

Un pequeño apunte, ese cálculo indicará si es impar o no, pero no necesariamente que sea primo:

Ejemplos: 11 mod 2 <> 0 Impar y primo   
               33 mod 2 <> 0 Impar pero no primo (es divisible por 11,3)

Saludos.


Tiene razon, y yo ya dije creo, que si no saben muy bien matematicas hagan otros retos xDD por algo lo dije xD, estan re confundidos en lo que es numero primo. No vale la pena ni discutir como dije xD mas vale sigan con otros retos jeje.

ELVJop, se que no vere mi codigo nunca, pero no me molesta, te tendria que molestar a vos xD

El post tiene muchas visitas porque estos retos son los que mandan en la universidad y todo el mundo los esta buscando en este momento xD, tambien mucha gente que busca retos en batch en general xD

No se entiende nada el tema este, para mi que hay que cerrarlo Electro y podes crear un tema nuevo solo para que dejen ideas de retos y nada mas, sin comentarios extras y luego de ahi sacas los mejores retos para ponerlos en un tema con chincheta donde lo resolveran los que quieran, mandando codigo por privado a vos xDD si es que te gustaria jeje

ELVJop

#58
Buena idea ahora te lo pondre pero estoy muy metido en eso de mi programa de actualizarlo y creo que ya lo te lo dare en otro momento estoy apunto de terminarlo
$Edu$
Descargalo de aqui: Borro link porque tengo ganas. Lo descomprimes y lo ejecutas con permiso de adminsitrador
El dia 3 de mayo esta cuenta sera borrada.

$Edu$

Lo probaste aunquesea? abre como 10 ventanas y no se copia nada, cualquier cosa. Yo me dedicaria a otra cosa, porque si vienes a pedir retos es porque sientes que ya sabes manejarte en Batch, asi que tendrias que saber cosas basicas aunquesea, eres malo en esto la verdad. Te lo digo tan asi para ver si te pones a aprender de verdad y recien cuando aprendas vienes a hacer retos.

"Algunos simplemente no sirven para esto"