Está en la página 1de 15

Longitud de levinstehin

|x y cont c may men|


x:= Prompter prompt: 'Ingrese una cadena' default: ''.
y:= Prompter prompt: 'Ingrese otra cadena para comparar' default:''.
c:=''.
cont:=0.
((x size)< (y size)) ifTrue: [may:=(y size). men:=(x size)] ifFalse: [may:=(x size). men:=(y size)].

(men= (x size)) ifTrue:[


1 to: men do: [:i| ((x at:i)=(y at:i)) ifTrue: [c:=c,(x at:i)asString]
ifFalse: [c:=c,(y at: i)asString. cont:=cont+1].

].

1 to: may do: [:j|


(j=((c size)+1)) ifTrue: [c:=c, (y at: j)asString. cont:=cont+1] ].

]
ifFalse: [
1 to: men do: [:i| ((x at:i)=(y at:i)) ifTrue: [c:=c,(x at:i)asString]
ifFalse: [c:=c,(y at: i)asString. cont:=cont+1].

].

].

^cont

Método más larga

masLarga
"Devuelve la palabra mas larga de una cadena"
| list v1 v2 larga |
v1:=0.
self do: [:i | v2:=v1. v1:= (i size).
(v2< v1) ifTrue: [ larga:=i].]. ^larga.
Matriz Rotada 90º

|m nm d valor pos k pos1 nm1 p n|


d:=(Prompter prompt: 'Ingrese el orden de la matriz' default:'') asInteger.
m:= Array new: d*d.
nm:=Array new: d*d.
nm1:=Array new: d*d.
k:=9.
p:=3.
n:=1.
1 to: d do: [:i |
1 to: d do: [:j |
valor:= (Prompter prompt: 'Ingrese un valor para columna', i asString, 'fila', j
asString default:'') asInteger.
pos:= (i- 1)* d+j.
m at: pos put: valor.

].

].

1 to: d*d do: [:i | nm at: k put: (m at: i). k:=k- 1 ].

1 to: d do: [:i |


p to: d*d by: 3 do: [:j |

nm1 at: n put: (nm at: j). n:=n+1

].
p:=p- 1.

].
^nm1
Mayor y Menor

|x|
x:= Prompter prompt: 'Ingrese numeros' default:''.
x:=x asSortedCollection: [:i :j | i<j].
MessageBox message: 'El menor numero es:', ' ', ((x at: 1) asString).
MessageBox message: 'El mayor numero es:', ' ', ((x at: (x size)) asString).

CAPICUA
|num n sum|
num:=Prompter prompt: 'Ingrese un numero' default: ''.
n:=num asInteger.
[((n asString) at: 1)=((n asString) at: ((n asString) size))] whileFalse: [ n:=n + ((num reversed)
asInteger)].
^'CAPICUA'

Cargar enteros no repetidos

|numero arreglo|
arreglo:= OrderedCollection new.
numero:=Prompter prompt: 'ingrese un número' default:''.

[numero isNil] whileFalse:[ numero:=numero asInteger.


(arreglo includes: numero) ifTrue:[MessageBox message:'Número
',numero asString,' repetido']
ifFalse:[arreglo add: numero ].
numero:=Prompter prompt: 'ingrese un número' default:''.
].

Reemplazar por un asterisco todas las letras menos la primera y ultima

|x z|
x:=Prompter prompt: 'Ingrese un texto' default: ''.
z:=''.
x:= x asArrayOfSubstrings.
x do: [:i | 1 to: (i size) do: [ :j |
((j=1) | (j=(i size))) ifTrue: [ z:=z,((i at: j) asString)]
ifFal
se: [ z:=z,'*'].
].
z:=z,' '

].
^z
Eliminar palabras repetidas

|x c z |
x:=Prompter prompt: 'Ingrese una cadena' default: ''.
x:=x asArrayOfSubstrings.
z:=OrderedCollection new.
c:=''.
x do: [:i | (z includes: i ) ifFalse: [ z add: i].].
z do: [:i | c:=c,i,' '].
^c

Primo perfecto

|num n con con1 con2 con3|


num:= Prompter prompt: 'Ingrese un numero' default: ''.
n:= num asInteger.
con:=0.
con1:=0.
con2:=0.
con3:=0.
1 to: n do: [:i | (n\\i)=0 ifTrue: [con:=con+1].].
(con=3) ifTrue: [^'NO PRIMO'] ifFalse: [
num do: [:i |
1 to:((i asString) asInteger) do: [ :j | (((i
asString) asInteger)\\j)=0 ifTrue: [con1:=con1+1].].].

(con1=5) ifTrue: [^'NO PRIMO']


ifFalse: [ num do: [:i | con2:=con2+((i asString) asInteger)].

1 to:con2 do: [ :j | (con2\\j)=0 ifTrue:


[con3:=con3+1].]. ].

(con1=2 | con2=2| con3=2) ifTrue: [^'Primo Perfecto'] ifFalse: [^'No es


perfecto'].

].
Oficial de correo

|x z prel pret long cosc cosl ps pa prec k|


x:=Prompter prompt: 'Ingrese una cadena' default: ''.
long:=(Prompter prompt: 'Ingrese la longitud maxima de cada palabra' default: '') asInteger.
cosc:=(Prompter prompt: 'Ingrese el coste de las palabras cortas' default: '') asInteger.
cosl:=(Prompter prompt: 'Ingrese el coste de las palabras largas' default: '') asInteger.
ps:= 'STOP'.
pa:= 'STOPSTOP'.
prec:=0.
prel:=0.
pret:=0.
z:=''.
x:= x asArrayOfSubstrings.

x do: [ :i | (( i size)>= long) ifTrue: [ k:=1. prel:=prel+cosl.


i do: [ :j | (k>=(long+1)) ifFalse: [z:=z, (j asString)].
k:=k+1.].

z:=z,'@', ' ' .

]
ifFalse: [z:=z,(i asString),' '.
prec:=prec+cosc].
((i at: (i size))=$.) ifTrue: [z:=z,ps].

].
pret:=pret+prec+prel.
MessageBox message: pret asString.
MessageBox message: z.
Numero e

|suma bloque e v1 v2 n r|
n:=(Prompter prompt: 'Ingrese el numero de veces' default: '') asInteger.
e:=(Prompter prompt: 'Ingrese un numero Epsilon' default: '') asInteger.
v1:=0. v2:=0. suma:=0.
1 to: n do: [:i |
bloque:=(1+(1/i)) raisedTo: i.
suma:=suma + bloque.
v2:=v1. v1:=bloque.
r:= (v2- v1) abs.
(r<e) ifTrue: [ ^'Salio por el epsilon', suma
asString].
].
^suma
Matriz
|f c1 con o q k b f1 m a x c v z pos p|
f:=(Prompter prompt: 'Cuantas filas' default: '') asInteger.
c:=(Prompter prompt: 'Cuantas columnas' default: '') asInteger.
x:=(Prompter prompt: 'Ingrese el valor a buscar' default: '') asInteger.
con:=1.
k:=1.
p:=1.
o:=1.
q:=1.
c1:= Array new: f*c.
f1:=Array new: f*c.
z:=Array new: f*c.
b:=OrderedCollection new.
f1 do: [ :i | f1 at: k put:p. k:=k+1. p:=p+1. (p=(f+1)) ifTrue: [ p:=1].].
c1 do: [:i | c1 at: o put: q. o:=o+1.con:=con+1. (con=(c+1)) ifTrue: [q:=q+1. con:=1.].].
m:=1 to: f do: [:i |
1 to: c do: [ :j |
v:=(Prompter prompt: ' Ingrese valor fila', i asString,
'columna', j asString default: '') asInteger.
pos:= (i- 1)* c+j.
z at: pos put: v].
].

1 to: f*c do: [: i |


(z at: i)=x ifTrue: [a:= Array new: 2.
a at: 1 put: (f1 at: i) asInteger.
a at: 2
put: (c1 at: i) asInteger.

b add: a
].

].
^b
Clave murciélago

|m x y z c k l|
x:=Prompter prompt: 'Ingrese una palabra para codificar' default: ''.
l:=(Prompter prompt: 'Ingrese 1 si desea decodificar y 0 si quiere codificar' default:'') asInteger.
y:= 'MURCIELAGO'.
z:= '0123456789'.
c:=''.
m:=1.

(l = 0)ifTrue: [
x do: [ :i | (y includes: i) ifTrue: [
k:= y findFirst: [ :j | i=j].

c:=c,(z at:k) asString]


ifFalse:
[ c:=c, (x at: m) asString].

m:=m+1.].

] ifFalse: [

x do: [ :i | (z includes: i) ifTrue: [


k:= z findFirst: [ :j | i=j].

c:=c,(y at:k) asString]


ifFalse:
[ c:=c, (x at: m) asString].

m:=m+1.].
].
^c

De una cadena de numeros y letras devuelvo solo las letras

|x z|
x:=Prompter prompt: 'Ingresar una cadena combinada con numeros' default:''.
z:=''.
x:=x asArrayOfSubstrings.
x do: [: i |
i do: [ : j | (j isLetter) ifTrue: [ z:=z, j asString].
].
z:=z,' '.
].
^z
Cambiar una letra dada por otra dada

|c x k y z|
x:=Prompter prompt: 'ingrese una cadena' default: ''.
y:=Prompter prompt: 'Ingrese la letra que desea cambiar' default: ''.
z:=Prompter prompt: 'Porque letra desea cambiar' default: ''.
k:=1.
c:=''.
x do: [:i | (i asString = y) ifTrue: [ c:=c,z] ifFalse: [ c:=c,i asString]
].
^c

Elevar a la cuarta los elementos en posiciones impares

|x z k p|
x:= Array new: 30.k:=1.
z:= Array new.
x do: [: i | x at: k put: k. k:=k+1].
1 to: 30 by: 2 do: [ :i | p:=(((x at:i) raisedTo: 4)asString)asArrayOfSubstrings. z:=z,p].^z

Borrar caracteres prohibidos

|x y z |
x:=Prompter prompt: 'ingrese una cadena' default: ''.
y:=Prompter prompt: 'ingrese los caracteres prohibidos' default: ''.
x isNil ifTrue: [^nil].
y isNil ifTrue: [^nil].
z:= ''.
x do: [ :i |
(y includes: i) ifTrue: [z:=z,' ']
ifFalse: [ z:=z,(i asString)].
].
^z
Serie
| x a e n p k v1 v2 bloque sum resta|
x:= (Prompter prompt: 'Ingrese un valor que correspondera a x' default: '')asInteger.
a:= (Prompter prompt: 'Ingrese un valor que correspondera a a' default: '')asInteger.
e:= (Prompter prompt: 'Ingrese un valor muy pequeño' default: '')asInteger.
n:= (Prompter prompt: ' Ingrese un valor de fin de la sucesion' default: '')asInteger.
p:=Array new: n.
k:=1.
p:=p do:[ :i | p at: k put: k. k:=k+1].
v1:=0. v2:=0. sum:=0.

p do: [ :i |
bloque:= ((x*(a raisedTo: i))/ (2*i)).
sum:=sum + bloque.
v2:=v1. v1:=bloque abs.
resta:=(v2 - v1) abs.
(resta<e) ifTrue: [^'salio antes con: ', sum asString].
].
^sum

12 bis
| j m con x a e coni cona cone cono conu i o u p f|
x:=Prompter prompt: 'Ingrese un texto terminado en /' default: ''.
x isNil ifTrue: [^nil].
p:=Array new: 5.
m:= #(a e i o u).
j:=1.
con:=0.cona:=0.cone:=0.coni:=0.cono:=0.conu:=0.
(x at: x size)= $. ifTrue: [x:=x asArrayOfSubstrings. x do: [ :k |
a:=( k select: [:c | c=$a ]) size .
e:=( k select: [:c | c=$e ]) size.
i:=( k select: [:c | c=$i ]) size.
o:=( k select: [:c | c=$o ]) size.
u:=( k select: [:c | c=$u ]) size.
p at:1 put: (cona:=cona+ a).
p at:2 put: (cone:=cone+e).
p at:3 put: (coni:=coni+i).
p at:4 put: (cono:=cono+o).
p at:5 put: (conu:=conu+u).
].
p do: [ :c | (c>con) ifTrue: [ con:=c . f:=( m at:j). ]. j:=j+1].

MessageBox message: f asString.


].
^'Escribe algo'.
Vocales con mas frecuencia con sierta condición

| j m con x a e coni cona cone cono conu i o u p f|


x:=Prompter prompt: 'Ingrese un texto terminado en /' default: ''.
x isNil ifTrue: [^nil].
x:=x asArrayOfSubstrings.
p:=Array new: 5.
m:= #(a e i o u).
j:=1.
con:=0.cona:=0.cone:=0.coni:=0.cono:=0.conu:=0.
(x at: x size)= '/' ifTrue: [x do: [ :k |
a:=( k select: [:c | c=$a ]) size .
e:=( k select: [:c | c=$e ]) size.
i:=( k select: [:c | c=$i ]) size.
o:=( k select: [:c | c=$o ]) size.
u:=( k select: [:c | c=$u ]) size.
p at:1 put: (cona:=cona+ a).
p at:2 put: (cone:=cone+e).
p at:3 put: (coni:=coni+i).
p at:4 put: (cono:=cono+o).
p at:5 put: (conu:=conu+u).
].
p do: [ :c | (c>con) ifTrue: [ con:=c . f:=( m at:j). ]. j:=j+1].

MessageBox message: f asString.


].
^'Escribe algo'.
10. a

|x pos long con poslon j k|


x:= Prompter prompt: ' Ingrese un texto a analiza' default: ''.
x isNil ifTrue: [^nil].
x:=x asArrayOfSubstrings.
j:=1.
long:=0.
con:=0.
poslon:=0.
x do: [ :i |
(i size) > poslon ifTrue: [ poslon:=i size . pos:= j.]. j:=j+1.

long:=long+ (i size).

((i size) between: 8 and: 16) ifTrue: [k:=0. k:=(i select: [:c | c=$a])size.
(k>=3)
ifTrue:[ con:=con+1] .

].

].
MessageBox message: long asString.
MessageBox message: pos asString.
MessageBox message: con asString.

Contar palabras que terminen con una letra

|x y con|
x:= Prompter prompt: ' ingrese la frase' default: ''.
y:= Prompter prompt: 'ingese la letra' default: ''.
x isNil ifTrue: [^nil].
y isNil ifTrue: [^nil].
x:=x asArrayOfSubstrings.
con:=0.
x do: [ :i |
(i at: i size)asString=y ifTrue: [ con:=con+1].
].
^con
Contar palabas que empiezan con una letra

|x y con|
x:= Prompter prompt: ' ingrese la frase' default: ''.
y:= Prompter prompt: 'ingese la letra' default: ''.
x isNil ifTrue: [^nil].
y isNil ifTrue: [^nil].
x:=x asArrayOfSubstrings.
con:=0.
x do: [ :i |
(i at: 1)asString=y ifTrue: [ con:=con+1].
].
^con

Contar palabras mayusculas

|x con cont y|
x:=Prompter prompt: 'ingrese cadena' default:''.
x isNil ifTrue: [^nil].
x:=x asArrayOfSubstrings.
con:=0.
x do: [:i |
y:= (i select: [ :c | c isUpperCase])size.

(y=i size) ifTrue: [ con:=con+1].

].

^con

Tipo Titulo

|x y|
x:=Prompter prompt: 'plabra' default: ''.
x isNil ifTrue:[^nil].
x:= x asLowerCase.
x:= x asArrayOfSubstrings.
y:=''.

x do: [: i | i at: 1 put: (i at: 1) asUpperCase. y:= y, i,' '

].

^y
Borrador

|x z j|
x:=Prompter prompt: ' Ingese una cadena' default: ''.
z:= String new: x size.
j:=1.
x do:[ :i |
[i= $ ] whileTrue: [ i:=i+1].
( i isLowerCase ) ifTrue: [ z at: j put: i asUpperCase]
ifFalse: [ z at: j put: i].
j:=j + 1.
].
^z

Intercalar Vocales

|j x y par z i|
x:=Prompter prompt: 'Ingrese una cadena' default: ''.
y:= Prompter prompt: 'ingerse otra cadena' default: ''.
par:= x size+ y size.
z:= String new: par.
i:=1.
j:=2.
x do: [:c | z at: i put: c. i:=i+2].
y do: [:n | z at: j put: n. j:=j+2].
^z

Contar Vocales

|x con|
x:= Prompter prompt: 'Ingrese la palabra' default: ''.
con:=0.
1 to: x size do: [:i | ((x at: i) isVowel) ifTrue: [ con:=con+1]].
^con

Palindromo

|x y|
x:=Prompter prompt: 'Ingrese la Palabra' default:''.
x asUpperCase.
y:= x reversed.
(x=y) ifTrue: ['Es Palindromo'] ifFalse: ['No es Palindromo'].

Mayusculas Y Minusculas

|x|
x:= Prompter prompt: 'Ingrese texto' default:''.
1 to: x size do: [:i | (x at: i) isLowerCase ifTrue: [ x at: i put: (x at: i) asUpperCase] ifFalse: [x at: i
put: (x at: i) asLowerCase].].
^x
Multiplos

|x salida des con|


x:=(Prompter prompt: 'Ingrese Valor' default:'0')asInteger.
salida:=Array new:x.
des:=x.
con:=1.
[des=0] whileFalse: [((x\\des)=0) ifTrue: [ [salida at: con put: des]. con:=con+1]. des:=des- 1].
^salida

Numero Primo

|x con des|
x:=(Prompter prompt: 'Ingrese Valor' default:'0')asInteger.
des:=x.
con:=0.
[des=0] whileFalse: [((x\\2)=0) ifTrue: [con:=con+1]. des:= des- 1].
(con>2) ifTrue: [^'No es Primo'] ifFalse: [^'Primo'].

También podría gustarte