Biorhythms: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Automated syntax highlighting fixup (second round - minor fixes)) |
No edit summary |
||
Line 93: | Line 93: | ||
Mental day 25: valley |
Mental day 25: valley |
||
</pre> |
</pre> |
||
=={{header|Amazing Hopper}}== |
|||
Esta es mi versión de la tarea: en vez de mostrar cifras frías, es mejor un gráfico, aunque este sea en texto. |
|||
Hopper permite usar la opción de preprocesamiento especial "High level", que consiste en que todo lo encerrado entre "#( )" será escrito de la forma infija formal, con expresiones como "(2+3)*sin(PI)" y cosas parecidas. En la tarea presente, la cantidad de cálculos y su complejidad hacen meritorio usar esta opción del preprocesador, que no es muy óptima debido a que realiza un preprocesado general, pero salva. |
|||
Un preprocesamiento general hace que una línea como "a+b" sea convertida a "{a};{b};add", cuando lo óptimo sería "{a} plus(b)", porque en el segundo caso no es necesario pasar "b" a la pila de trabajo. la instrucción "plus" no trabaja con expresiones. |
|||
Las expresiones dentro de "#()" deben escribirse cuidando el uso de paréntesis y sin espacios en blanco en los nombres de variables. |
|||
<syntaxhighlight lang="Amazing Hopper"> |
|||
/* TASK: Bioritmo, Rosetta Code */ |
|||
#include <jambo.h> |
|||
Main |
|||
Set break |
|||
Set stack 15 |
|||
Get total args |
|||
If ( Is equal to '7' ) |
|||
/* argumentos del programa*/ |
|||
nombre="", año=0, mes=0, día=0, año a examinar=0, mes a examinar=0 |
|||
Set ' Arg str(2), Arg num(3) Arg num(4), Arg num(5) ', Move to 'nombre, año, mes, día' |
|||
Set ' Arg num(6), Arg num(7) ', Move to 'mes a examinar, año a examinar' |
|||
/* arrays de valores constantes */ |
|||
Void ' Etiquetas, Meses, Factores ' |
|||
/* otras variables utilitarias */ |
|||
b=año, g=año a examinar, l=g, r=0 |
|||
/* programa */ |
|||
Gosub 'Configuración del programa' |
|||
Gosub 'Construcción del bioritmo' |
|||
Locate (22, 1), Prnl |
|||
Else |
|||
Printnl ("Modo de uso: hopper bioritmo.jambo NOMBRE DD MM AA MME AAE") |
|||
Printnl (Utf8("donde DD,MM,AA fecha de nacimiento, MME, AAE mes y año a examinar")) |
|||
End If |
|||
End |
|||
Subrutines |
|||
Define 'Construcción del bioritmo' |
|||
ak=0, b1=0, y=0 |
|||
Loop |
|||
Gosub 'Análisis de año bisiesto' |
|||
Let ( ak := #( Factores[mes]+28.5-día ) ) |
|||
++mes |
|||
x=12 |
|||
When ( #( mes < 13 ) ){ Set 'ak,x', Let( ak := Gosub 'Cálculo' ) } |
|||
Let ( b1 := #( g-b-1 ) ) |
|||
Set decimal '0' |
|||
Let ( ak := #( (b1*365+((g-1)/4)-((g-1)/100)+((g-1)/400)-((b/4)-(b/100)+(b/400))+ak) ) ) |
|||
Unset decimal |
|||
y = ak |
|||
Let (b := g) |
|||
Gosub 'Análisis de año bisiesto' |
|||
Let ( x := #( mesaexaminar - 1 ) ) |
|||
Let ( mes := 1 ) |
|||
If ( #( x <> 0 ) ) |
|||
Set 'ak, x', Let( ak := Gosub 'Cálculo' ) |
|||
y = ak |
|||
End If |
|||
Cls |
|||
Set 'ak, y', Gosub 'Desplegar la malla' |
|||
Pause |
|||
++mes a examinar |
|||
Until ( #( mesaexaminar == 13 ) ) |
|||
Return |
|||
Define 'Desplegar la malla, ak, y' |
|||
i=4, j=0, i1=1, fi=3 |
|||
Loop |
|||
Set 'i, i1, fi', Gosub 'Genera la malla' |
|||
Set 'i, fi, i1', Gosub 'Escribe la identificación' |
|||
Set 'ak, i, fi', Gosub 'Despliega el bioritmo' |
|||
i += 34 |
|||
Let ( ak := y ) |
|||
++i1 |
|||
++j |
|||
Until ( #( j == 3 ) ) |
|||
Return |
|||
Define 'Genera la malla, i, i1, fi' |
|||
j1=4, j2=0, ti=i, i2=0 |
|||
Let ( r := Get if( Equals( i1,1 ), 23, Get if( Equals( i1,2 ), 28, 33) ) ) |
|||
Loop |
|||
Let ( j2 := Add( 4, i ) ) |
|||
Loop if ( #( j2 < ( (27+Factores[mesaexaminar])+i) ) ) |
|||
Locate ( #(j1+fi), j2 ), Printnl (" |") |
|||
j2 += 5 |
|||
Back |
|||
Locate ( #(j1+fi), #( 28+(Factores[mesaexaminar])+i) ), Printnl ("| ") |
|||
++j1 |
|||
Until ( #( j1 > 13 ) ) |
|||
Let ( i := ti ) |
|||
i2 = ti |
|||
j2 = 1 |
|||
Loop if ( #( j2 < ((27 + Factores[mesaexaminar] )+1) ) ) |
|||
Locate ( #(8+fi), #(i2+1) ), Printnl ("-") |
|||
++i2, ++j2 |
|||
Back |
|||
Locate ( #(8+fi), #(5+i) ), Printnl ( "+" ) |
|||
Loccol ( #(10+i) ), Printnl ( "+" ) |
|||
Loccol ( #(15+i) ), Printnl ( "+" ) |
|||
Loccol ( #(20+i) ), Printnl ( "+" ) |
|||
Loccol ( #(25+i) ), Printnl ( "+" ) |
|||
Locate ( #(14+fi), #(1+i) ), Printnl ( "1...5...10...15...20...25..." ) |
|||
If ( #( (28+Factores[mesaexaminar]) == 29 ) ) |
|||
Locate ( #(14+fi), #(29+i) ), Printnl ( "." ) |
|||
Else If ( #( (28+ Factores[mesaexaminar]) == 30 ) ) |
|||
Locate ( #(14+fi), #(29+i) ), Printnl ( "30" ) |
|||
Locate ( #(8+fi), #(30+i) ), Printnl ( "+" ) |
|||
Else If ( #( (28+Factores[mesaexaminar]) == 31 ) ) |
|||
Locate ( #(14+fi), #(29+i) ), Printnl ( "30." ) |
|||
Locate ( #(8+fi), #(30+i) ), Printnl ( "+" ) |
|||
End If |
|||
Return |
|||
Define 'Escribe la identificación, i, fi, i1' |
|||
Locate ( #(16+fi), #(1+i) ), Printnl ( #( Meses[mesaexaminar] ), " ", Int(l), " D. de C." ) |
|||
Locrow ( #(17+fi) ), Printnl ( "Bioritmo para ", nombre ) |
|||
Locrow ( #(18+fi) ), Printnl ( "Estado: ", #( Etiquetas[i1] ) ) |
|||
Return |
|||
Define 'Despliega el bioritmo, ak, i, fi' |
|||
n=0, j=0 |
|||
PI = M_PI |
|||
Loop if( #( j < ( (28 + Factores[mesaexaminar]) * 2 ) ) ) |
|||
Let ( ak := #( ak + 0.5 ) ) |
|||
Let ( n := #( (10 * ( -(sin( ( 2 * PI * ak ) / r ) ) ) ) + 17 ) ) |
|||
If ( #( (int( int( j / 2 )-(( int( j / 2) / 5) * 5))) == 5 ) ) |
|||
Locate ( #( int( n / 2 ) + fi ), #( int( j / 2 ) + ( i + 1 )) ) |
|||
Else |
|||
Locate ( #( (n / 2 ) + fi ), #( ( j / 2 ) + ( i + 1 ) ) ) |
|||
End If |
|||
Printnl ("*") |
|||
++j |
|||
Back |
|||
Return |
|||
Define 'Análisis de año bisiesto' |
|||
x1=0, x2=0, x3=0 |
|||
/* "b" es variable global */ |
|||
Let ( x1 := Get if ( #( b - ( int( b / 4 ) * 4 ) == 0 ), 1, 0 )) |
|||
Let ( x2 := Get if ( #( b - ( int( b / 100 ) * 100 ) == 0 ), 1, 0 )) |
|||
Let ( x3 := Get if ( #( b - ( int( b / 400 ) * 400 ) == 0 ), 1, 0 )) |
|||
[2] #( x1 - x2 + x3 ), Put 'Factores' |
|||
Return |
|||
Define 'Cálculo, ak,x' |
|||
i = mes |
|||
Loop if( #(i <= x) ) |
|||
Let ( ak := #( 28 + Factores[i] + ak ) ) |
|||
++i |
|||
Back |
|||
Return 'ak' |
|||
/* CONFIGURACION DEL PROGRAMA */ |
|||
Define ' Configuración del programa ' |
|||
Set ' Utf8("Físico"), "Emocional", "Intelectual" ' Apnd list 'Etiquetas' |
|||
Set ' "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", \ |
|||
"Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ' Apnd list 'Meses' |
|||
Set ' 3, 0, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3 ' Apnd list 'Factores' |
|||
Return |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
$ hopper jm/bioritmo.jambo |
|||
Modo de uso: hopper bioritmo.jambo NOMBRE DD MM AA MME AAE |
|||
donde DD,MM,AA fecha de nacimiento, MME, AAE mes y año a examinar |
|||
$ hopper jm/bioritmo.jambo Mr.Dalien 18 1 1980 1 2022 |
|||
*** ** ***** **** |
|||
| ** ** | | || **| | | | ** |* ** | | | | |* |
|||
| ** |** | | || ** | | | *| || |** | | | | **| |
|||
| *| | * | | || ** | | | * | || | ** | | | | **|| |
|||
| * | | * | | |* |** | | | * | || | **| | | | ** || |
|||
----+-*--+----+---*+----+----*| ----+-*--+----+----+*---+----+| ----+---**----+----+----+**--+| |
|||
|** | | ** | **| | * | | ** | || | |* | | * || |
|||
|* | | * | *|| | *| | ** | || | | * | | *| || |
|||
* | | |* | * || | * | **| | || | | **| | ** | || |
|||
**| | | | ** |** || | |** | ** | | || | | ** |** | || |
|||
*** | | | | **** || | | ***** | | || | | |***** | || |
|||
1...5...10...15...20...25...30. 1...5...10...15...20...25...30. 1...5...10...15...20...25...30. |
|||
Enero 2022 D. de C. Enero 2022 D. de C. Enero 2022 D. de C. |
|||
Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien |
|||
Estado: Físico Estado: Emocional Estado: Intelectual |
|||
*** ** ***** ****** |
|||
** | ** | | | ** | * | | | | ** | * * |** | | | | | |
|||
** | **| | | ** | ** | | | |* | | | **| | | | | |
|||
* | *| | | *| | ** | | | * | | | ** | | | | |
|||
| * | | * | | **| | | *| | | | ** | | | | |
|||
----+----+*---+----+-*--+--| ---*+----+----+--*-+----+--| ----+----+**--+----+----+--* |
|||
| |** | |** | | * | | ** | | | | | * | | | *| |
|||
| | * | |* | | |* | |** | | | | | *| | |* | |
|||
| | * | * | | | * | ** | | | | | ** | ** | |
|||
| | ** **| | | | **| ** | | | | | |** | **| | |
|||
| | **** | | | | ***** | | | | | | | ***** | | |
|||
1...5...10...15...20...25... 1...5...10...15...20...25... 1...5...10...15...20...25... |
|||
Febrero 2022 D. de C. Febrero 2022 D. de C. Febrero 2022 D. de C. |
|||
Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien |
|||
Estado: Físico Estado: Emocional Estado: Intelectual |
|||
.... |
|||
*** ** ***** ****** |
|||
** ** | | | **|| | | | ** | **| || | ** |** | | || |
|||
** |** | | | ** || | | |* | ** || | **| | **| | || |
|||
*| | * | | | * || | | * | ** || | ** | | ** | || |
|||
* | | * | | |* || | | *| | |** || |** | | ** | || |
|||
-*--+----+---*+----+----*----+| ----+----+--*-+----+----+-*--+| ----**---+----+----+**--+----+| |
|||
** | | ** | ** || | | ** | | | * || *| | | | * | || |
|||
* | | * | *| || * | |** | | | *|| * | | | | *| || |
|||
| | |* | * | || * | ** | | | *| ** | | | | ** || |
|||
| | | ** |** | || **| ** | | | |* * | | | | |** || |
|||
| | | **** | || ***** | | | | || | | | | | **** |
|||
1...5...10...15...20...25...30. 1...5...10...15...20...25...30. 1...5...10...15...20...25...30. |
|||
Mayo 2022 D. de C. Mayo 2022 D. de C. Mayo 2022 D. de C. |
|||
Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien |
|||
Estado: Físico Estado: Emocional Estado: Intelectual |
|||
.... |
|||
*** * ***** * ****** |
|||
** ** | | | **| ** | ** | | | | ** | | | | ** * |
|||
** |** | | | ** | | **| | | | * | | | | | ** | | |
|||
*| | * | | | * | | ** | | | * | * | | | |** | | |
|||
* | | * | | |* | | ** | | |* | ** | | | ** | | |
|||
-*--+----+---*+----+----*----+ ----+----+*---+----+----*----+ -**-+----+----+---**----+----+ |
|||
** | | ** | ** | | | * | | ** | *| | | * | | | |
|||
* | | * | *| | | | * | | **| | * | | * | | | |
|||
| | |* | * | | | | *| | ** | | |** | ** | | | |
|||
| | | ** |** | | | | ** |** | | | ** | ** | | | |
|||
| | | **** | | | | |***** | | | ***** | | | | |
|||
1...5...10...15...20...25...30 1...5...10...15...20...25...30 1...5...10...15...20...25...30 |
|||
Noviembre 2022 D. de C. Noviembre 2022 D. de C. Noviembre 2022 D. de C. |
|||
Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien |
|||
Estado: Físico Estado: Emocional Estado: Intelectual |
|||
** *** **** **** **** |
|||
**| | | |** |** || ** | | | | ** || * | | | | | ** || |
|||
** | | ** | ** || |** | | | |* || ** | | | | ** || |
|||
* | | * | * || | ** | | | * || **| | | | ** || |
|||
|* | | *| | *|| | **| | | *| || ** | | | **| || |
|||
----+-*--+----+--*-+----+----*| ----+---*+----+----+--*-+----+| ----**---+----+----+-**-+----+| |
|||
| ** | | ** | | ** | * | | ** | || | * | | |* | || |
|||
| * | | * | | |* | |* | |** | || | * | | * | || |
|||
| *| |* | | || | | * | ** | || | ** | **| | || |
|||
| ** ** | | || | | **| ** | || | ** | ** | | || |
|||
| |****| | | || | | ***** | | || | | ***** | | || |
|||
1...5...10...15...20...25...30. 1...5...10...15...20...25...30. 1...5...10...15...20...25...30. |
|||
Diciembre 2022 D. de C. Diciembre 2022 D. de C. Diciembre 2022 D. de C. |
|||
Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien Bioritmo para Mr.Dalien |
|||
Estado: Físico Estado: Emocional Estado: Intelectual |
|||
</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
{{trans|Locomotive Basic}} |
{{trans|Locomotive Basic}} |