Your skill will accomplishwhat the force of many cannot PerlMonks

### Sinusoidal japh

by imp (Priest)
 on Aug 26, 2006 at 17:52 UTC Need Help??

My first obfu:
```print join('',@\$_),"\n" for map{@\$_->[0]}map{[[map{
@\$a=(@\$a,1);int sin(\$_*0.1)*8==\$b-8?[j,a,p,h]
->[\$#\$a%4]:' '}@\$_],\$b++]}([1..80])x16;
```                                          phjaphjaph
hja          ja
p               ph
ja                  j
h                     a
ap                       ph
j                           j
j                             ph                             aph
a                          ja                                  j
p                        h                                     a
hj                     p                                       ph
a                  ja                                          j
ph              ph                                             ap
ja          ja                                                 hj
phjaphjaph                                                     aphjaph

```

Replies are listed 'Best First'.
Re: Sinusoidal japh
by liverpole (Monsignor) on Aug 27, 2006 at 19:07 UTC
++imp on a nice theme for a first Japh!

A little formatting of the script, and your presentation could even hint at the output:

```print+                      join \$
x,@\$_,                \$/for  map{@
\$_->[0            ]}map      {[[map
{push@          \$a,1;        int 8
*sin \$_       *.1==          \$b-8?
(j,a,p     ,h)[@            \$a%4]
:\$"}+  @\$_],                \$b++]
}([1..                     80])x16;

By the way, it occurred to me that changing "==" to "<=" will integrate the sine wave:

```                                          hjaphjaphj
+
japhjaphjaphjap
+
hjaphjaphjaphjaphj
+
aphjaphjaphjaphjaphja
+
japhjaphjaphjaphjaphjap
+
phjaphjaphjaphjaphjaphjaphj
+
aphjaphjaphjaphjaphjaphjaphja
+
a                             hjaphjaphjaphjaphjaphjaphjaphjaphj
+
ap                          aphjaphjaphjaphjaphjaphjaphjaphjaphja
+
aph                        japhjaphjaphjaphjaphjaphjaphjaphjaphjap
+
aphja                     hjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphj
+
aphjap                  aphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphja
+
aphjaphj              hjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjap
+
aphjaphjap          aphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjap
+
aphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjaphjap

s''(q.S:\$/9=(T1';s;(..)(..);\$..=substr+crypt(\$1,\$2),2,3;eg;print\$..\$/
Good idea on the formatting. It adds a lot to the presentation.

Here's the beta version of the the fish variant:

```       print join('',                     @\$_)
,"\n"          for map              {@\$_
->    [0]       }map        {[[map{@\$a
=(                 @\$a,\$c=abs int sin(
\$_*              0.1)*     6>=abs(\$b
-6));\$c?[J,A,P,H]->             [\$#\$a%4]
:' '}@\$_],\$b++,]}                ([1..44])x12;
Re: Sinusoidal japh - Fishy version
by imp (Priest) on Aug 27, 2006 at 15:05 UTC
```print join('',@\$_),"\n" for map{@\$_->[0]}map{[[map{@\$a=(@\$a
,1);abs int sin(\$_*0.1)*6==abs(\$b-6)?[j,a,p,h]->[\$#\$a%4]:' '
}@\$_],\$b++,]}([1..44])x12;
I'll post a spoiler soon, ran out of time yesterday
Re: Sinusoidal japh - Spoiler
by imp (Priest) on Aug 27, 2006 at 17:48 UTC
The basic strategy is to iterate over a 80x12 table of data, and for each item determine whether it appears on the sine wave, plotting the next letter in the repeating 'japh' sequence if so.

The column index is treated as degree / 4.5, which yields 360 degrees for 80 columns.
Radian = Column * 4.5 * pi / 180. The coordinate system is very coarse, so not much precision is needed. Reduced as follows:

```radian = column * 4.5 * 3.14 / 180
```
To golf a bit I keep track of the current column by pushing another value onto @\$a in each column, and using \$#\$a for the current column index. Easier and more efficient to just use the value of \$_... but it amused me.

Using the sin * 6, and subtracting 6 from the current row (\$b) is done to provide a +-6 vertical range for the sin wave.

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: obfuscated [id://569822]
Approved by bobf
Front-paged by liverpole
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2024-03-04 14:25 GMT
Voting Booth?
My favourite way to spend a leap day ...

Results (30 votes). Check out past polls.