Re: [Pharo-users] mentor question 3 is there a formula for this

2020-04-29 Thread Richard Sargent
On Wed, Apr 29, 2020 at 11:30 AM Roelof Wobben  wrote:

> Am I right here or terrible wrong ?
>

If you are referring to calculating the size of the square, you are correct.


> Roelof
>
>
>
> Op 28-4-2020 om 20:53 schreef Roelof Wobben:
>
> Thanks,
>
> And the 5 can also be calculated by   2 * (char - $a)  + 1
>
> Roelof
>
>
>
> Op 28-4-2020 om 18:31 schreef Richard Sargent:
>
> Formula? Well, it's pretty straight forward.
>
> Let's start with the size of the diamond (it field, actually). In the
> example, there are two lines above and two lines below the "C" line.
> C-A = 2. This number looks useful.
> The dimension is 2+1+2 square.
>
> Yes. That is what I wrote.

>
> How many spaces before a letter? C-letter i.e. C-A = 2 C-B = 1 and C-C = 0
> The same number of spaces after the second/last occurrence of the letter
> on the line.
> The number of spaces between the letters on a line is the size minus the
> number of spaces before and after plus the two copies of the current line's
> letter. For the "B" line, there is one space before and after, 2x"B",
> leaving 5 - 1 -1 - 2 = 1 space between. For the "A" line, the simple
> arithmetic would give you -1, which also confirms that just one "A" is
> appropriate with no space between first and last letter on the line. (For
> "A", it is first and last, once only.)
>
> After that, you just need to iterate ($A to: $C), ($(C-1) to: $A by: -1)
> and do the arithmetic.
>
>
> On Tue, Apr 28, 2020 at 1:23 AM Roelof Wobben via Pharo-users <
> pharo-users@lists.pharo.org> wrote:
>
>> Hello,
>>
>> I try now to solve this one :
>>
>> ntroduction
>>
>> The diamond kata takes as its input a letter, and outputs it in a diamond
>> shape. Given a letter, it prints a diamond starting with 'A', with the
>> supplied letter at the widest point.
>> Requirements
>>
>>- The first row contains one 'A'.
>>- The last row contains one 'A'.
>>- All rows, except the first and last, have exactly two identical
>>letters.
>>- All rows have as many trailing spaces as leading spaces. (This
>>might be 0).
>>- The diamond is horizontally symmetric.
>>- The diamond is vertically symmetric.
>>- The diamond has a square shape (width equals height).
>>- The letters form a diamond shape.
>>- The top half has the letters in ascending order.
>>- The bottom half has the letters in descending order.
>>- The four corners (containing the spaces) are triangles.
>>
>> Examples
>>
>> In the following examples, spaces are indicated by · characters.
>>
>> Diamond for letter 'A':
>>
>> A
>>
>> Diamond for letter 'C':
>>
>> ··A··
>> ·B·B·
>> C···C
>> ·B·B·
>> ··A··
>>
>>
>> I noticed that if you take a quarter of it. you see this pattern
>>
>> 001
>> 010
>> 100
>>
>> where a 0 is a space and a 1 is the character.
>>
>> Is there a easy way to make some sort of formula so I can make a output of 
>> this ?
>>
>>
>> Roelof
>>
>>
>>
>
>


Re: [Pharo-users] mentor question 3 is there a formula for this

2020-04-29 Thread Roelof Wobben via Pharo-users
--- Begin Message ---

  
  
Am I right here or terrible wrong ?
  
  Roelof
  
  
  
  Op 28-4-2020 om 20:53 schreef Roelof Wobben:


  
  Thanks, 

And the 5 can also be calculated by   2 * (char - $a)  + 1 

Roelof



Op 28-4-2020 om 18:31 schreef Richard Sargent:
  
  


  Formula? Well, it's pretty straight forward.
  
  
  Let's start with the size of the diamond (it field,
actually). In the example, there are two lines above and two
lines below the "C" line. 
  
  C-A = 2. This number looks useful.
  The dimension is 2+1+2 square.
  
  
  How many spaces before a letter? C-letter i.e. C-A = 2
C-B = 1 and C-C = 0
  The same number of spaces after the second/last
occurrence of the letter on the line.
  The number of spaces between the letters on a line is the
size minus the number of spaces before and after plus the
two copies of the current line's letter. For the "B" line,
there is one space before and after, 2x"B", leaving 5 - 1 -1
- 2 = 1 space between. For the "A" line, the simple
arithmetic would give you -1, which also confirms that just
one "A" is appropriate with no space between first and last
letter on the line. (For "A", it is first and last, once
only.)
  
  
  After that, you just need to iterate ($A to: $C), ($(C-1)
to: $A by: -1) and do the arithmetic.
  
  



  On Tue, Apr 28, 2020 at 1:23
AM Roelof Wobben via Pharo-users 
wrote:
  
  
 Hello, 
  
  I try now to solve this one : 
  
  ntroduction
  
The diamond kata takes as its input a letter, and
  outputs it in a diamond shape. Given a letter, it
  prints a diamond starting with 'A', with the supplied
  letter at the widest point.
Requirements

  The first row contains one 'A'.
  The last row contains one 'A'.
  All rows, except the first and last, have exactly
two identical letters.
  All rows have as many trailing spaces as leading
spaces. (This might be 0).
  The diamond is horizontally symmetric.
  The diamond is vertically symmetric.
  The diamond has a square shape (width equals
height).
  The letters form a diamond shape.
  The top half has the letters in ascending order.
  The bottom half has the letters in descending
order.
  The four corners (containing the spaces) are
triangles.

Examples
In the following examples, spaces are indicated by ·
  characters.
Diamond for letter 'A':
A

Diamond for letter 'C':
··A··
·B·B·
C···C
·B·B·
··A··


I noticed that if you take a quarter of it. you see this pattern 

001
010
100

where a 0 is a space and a 1 is the character.

Is there a easy way to make some sort of formula so I can make a output of this ? 


Roelof


  

  

  
  


  


--- End Message ---


Re: [Pharo-users] mentor question 3 is there a formula for this

2020-04-29 Thread Ben Coman
Building on Richard's advice, one way to break this down into a series of
simpler tasks is
- first generate a square without any dots, i.e. ALL A's on the first line,
ALL B's on second line, ALL C's on third line.
- second, work out when to output a dot rather than a letter.

cheers -ben

On Wed, 29 Apr 2020 at 00:32, Richard Sargent <
richard.sarg...@gemtalksystems.com> wrote:

> Formula? Well, it's pretty straight forward.
>
> Let's start with the size of the diamond (it field, actually). In the
> example, there are two lines above and two lines below the "C" line.
> C-A = 2. This number looks useful.
> The dimension is 2+1+2 square.
>
> How many spaces before a letter? C-letter i.e. C-A = 2 C-B = 1 and C-C = 0
> The same number of spaces after the second/last occurrence of the letter
> on the line.
> The number of spaces between the letters on a line is the size minus the
> number of spaces before and after plus the two copies of the current line's
> letter. For the "B" line, there is one space before and after, 2x"B",
> leaving 5 - 1 -1 - 2 = 1 space between. For the "A" line, the simple
> arithmetic would give you -1, which also confirms that just one "A" is
> appropriate with no space between first and last letter on the line. (For
> "A", it is first and last, once only.)
>
> After that, you just need to iterate ($A to: $C), ($(C-1) to: $A by: -1)
> and do the arithmetic.
>
>
> On Tue, Apr 28, 2020 at 1:23 AM Roelof Wobben via Pharo-users <
> pharo-users@lists.pharo.org> wrote:
>
>> Hello,
>>
>> I try now to solve this one :
>>
>> ntroduction
>>
>> The diamond kata takes as its input a letter, and outputs it in a diamond
>> shape. Given a letter, it prints a diamond starting with 'A', with the
>> supplied letter at the widest point.
>> Requirements
>>
>>- The first row contains one 'A'.
>>- The last row contains one 'A'.
>>- All rows, except the first and last, have exactly two identical
>>letters.
>>- All rows have as many trailing spaces as leading spaces. (This
>>might be 0).
>>- The diamond is horizontally symmetric.
>>- The diamond is vertically symmetric.
>>- The diamond has a square shape (width equals height).
>>- The letters form a diamond shape.
>>- The top half has the letters in ascending order.
>>- The bottom half has the letters in descending order.
>>- The four corners (containing the spaces) are triangles.
>>
>> Examples
>>
>> In the following examples, spaces are indicated by · characters.
>>
>> Diamond for letter 'A':
>>
>> A
>>
>> Diamond for letter 'C':
>>
>> ··A··
>> ·B·B·
>> C···C
>> ·B·B·
>> ··A··
>>
>>
>> I noticed that if you take a quarter of it. you see this pattern
>>
>> 001
>> 010
>> 100
>>
>> where a 0 is a space and a 1 is the character.
>>
>> Is there a easy way to make some sort of formula so I can make a output of 
>> this ?
>>
>>
>> Roelof
>>
>>
>>


Re: [Pharo-users] mentor question 3 is there a formula for this

2020-04-28 Thread Roelof Wobben via Pharo-users
--- Begin Message ---

  
  
Thanks, 
  
  And the 5 can also be calculated by   2 * (char - $a)  + 1 
  
  Roelof
  
  
  
  Op 28-4-2020 om 18:31 schreef Richard Sargent:


  
  
Formula? Well, it's pretty straight forward.


Let's start with the size of the diamond (it field,
  actually). In the example, there are two lines above and two
  lines below the "C" line. 

C-A = 2. This number looks useful.
The dimension is 2+1+2 square.


How many spaces before a letter? C-letter i.e. C-A = 2 C-B
  = 1 and C-C = 0
The same number of spaces after the second/last occurrence
  of the letter on the line.
The number of spaces between the letters on a line is the
  size minus the number of spaces before and after plus the two
  copies of the current line's letter. For the "B" line, there
  is one space before and after, 2x"B", leaving 5 - 1 -1 - 2 = 1
  space between. For the "A" line, the simple arithmetic would
  give you -1, which also confirms that just one "A" is
  appropriate with no space between first and last letter on the
  line. (For "A", it is first and last, once only.)


After that, you just need to iterate ($A to: $C), ($(C-1)
  to: $A by: -1) and do the arithmetic.


  
  
  
On Tue, Apr 28, 2020 at 1:23
  AM Roelof Wobben via Pharo-users 
  wrote:


   Hello, 

I try now to solve this one : 

ntroduction

  The diamond kata takes as its input a letter, and
outputs it in a diamond shape. Given a letter, it prints
a diamond starting with 'A', with the supplied letter at
the widest point.
  Requirements
  
The first row contains one 'A'.
The last row contains one 'A'.
All rows, except the first and last, have exactly
  two identical letters.
All rows have as many trailing spaces as leading
  spaces. (This might be 0).
The diamond is horizontally symmetric.
The diamond is vertically symmetric.
The diamond has a square shape (width equals
  height).
The letters form a diamond shape.
The top half has the letters in ascending order.
The bottom half has the letters in descending order.
The four corners (containing the spaces) are
  triangles.
  
  Examples
  In the following examples, spaces are indicated by ·
characters.
  Diamond for letter 'A':
  A

  Diamond for letter 'C':
  ··A··
·B·B·
C···C
·B·B·
··A··


I noticed that if you take a quarter of it. you see this pattern 

001
010
100

where a 0 is a space and a 1 is the character.

Is there a easy way to make some sort of formula so I can make a output of this ? 


Roelof



  

  


  


--- End Message ---


Re: [Pharo-users] mentor question 3 is there a formula for this

2020-04-28 Thread Richard Sargent
Formula? Well, it's pretty straight forward.

Let's start with the size of the diamond (it field, actually). In the
example, there are two lines above and two lines below the "C" line.
C-A = 2. This number looks useful.
The dimension is 2+1+2 square.

How many spaces before a letter? C-letter i.e. C-A = 2 C-B = 1 and C-C = 0
The same number of spaces after the second/last occurrence of the letter on
the line.
The number of spaces between the letters on a line is the size minus the
number of spaces before and after plus the two copies of the current line's
letter. For the "B" line, there is one space before and after, 2x"B",
leaving 5 - 1 -1 - 2 = 1 space between. For the "A" line, the simple
arithmetic would give you -1, which also confirms that just one "A" is
appropriate with no space between first and last letter on the line. (For
"A", it is first and last, once only.)

After that, you just need to iterate ($A to: $C), ($(C-1) to: $A by: -1)
and do the arithmetic.


On Tue, Apr 28, 2020 at 1:23 AM Roelof Wobben via Pharo-users <
pharo-users@lists.pharo.org> wrote:

> Hello,
>
> I try now to solve this one :
>
> ntroduction
>
> The diamond kata takes as its input a letter, and outputs it in a diamond
> shape. Given a letter, it prints a diamond starting with 'A', with the
> supplied letter at the widest point.
> Requirements
>
>- The first row contains one 'A'.
>- The last row contains one 'A'.
>- All rows, except the first and last, have exactly two identical
>letters.
>- All rows have as many trailing spaces as leading spaces. (This might
>be 0).
>- The diamond is horizontally symmetric.
>- The diamond is vertically symmetric.
>- The diamond has a square shape (width equals height).
>- The letters form a diamond shape.
>- The top half has the letters in ascending order.
>- The bottom half has the letters in descending order.
>- The four corners (containing the spaces) are triangles.
>
> Examples
>
> In the following examples, spaces are indicated by · characters.
>
> Diamond for letter 'A':
>
> A
>
> Diamond for letter 'C':
>
> ··A··
> ·B·B·
> C···C
> ·B·B·
> ··A··
>
>
> I noticed that if you take a quarter of it. you see this pattern
>
> 001
> 010
> 100
>
> where a 0 is a space and a 1 is the character.
>
> Is there a easy way to make some sort of formula so I can make a output of 
> this ?
>
>
> Roelof
>
>
>