# Removing white spaces from a list ?

## Recommended Posts

Dear All,

I'm trying to find a loop for making substitutions in a list, for changing the ranges of a list of pitches.

SOME PITCHES (AND WHAT TO CHANGE)

```(setf pitches '(c4 d4 e4 c4 eb4 f4 c4 eb4 eb5))
(setf i '(c4 eb4))```

This will take out the range of the notes, i.e., c4 db5 will became c db

```(defun convert-pitch (pitches)
(loop for i in pitches
when (pitchp i)
collect (compress (butlast (explode i)))
else collect i))```

Setting a variable for pitches without range indication (pitnorng)

and a new range list

```(setf pitnorng (convert-pitch pitches))
(setf rangelist '(4 5 3 6 4))```

Function to put back the new range to the notes

```(defun convert-pitchbk (pitnorng)
(loop for i in pitnorng
when i
collect (flatten (mapcar 'list pitnorng rangelist)) else collect i
))```

Setting a collection of notes with new ranges:

`(setf convbaklst (convert-pitchbk pitnorng))`

The (problematic) result:

`((c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4))`

I have WHITE SPACES between the note and the corresponding range...

LISP PROBLEM:

How to remove the white spaces ?

Best,

Julio

And also...

The list is multiplied 9 times... why?

Some problem in the loop function, I suppose...

##### Share on other sites

```(loop for i in (gen-divide 2 '(c 4 d 5 e 3 c 6 eb 4))
collect (compress i))

=> (c4 d5 e3 c6 eb4)```

i didn't read you posts precisely. only the last ONE ...but you could use COMPRESS...?

##### Share on other sites

Thanks a lot, André !

I´m trying to use your famous loops !

All the Best !

Happy 2019 !

Julio

##### Share on other sites

I will make the octave-map function work with octaves numbers as well.

```(octave-map '(c3 cs3 e5 f5 fs6 g5 gs4 a4 as3 b3)
'(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4))
=> (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3)

(octave-map '(3 3 5 5 6 5 4 4 3 3)
'(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4))
=> (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3)```

##### Share on other sites

1 hour ago, JulioHerrlein said:

Thanks a lot, André !

I´m trying to use your famous loops !

All the Best !

Happy 2019 !

Julio

i know, LOOPS are not very LISPian! but for me the most simple way "to think such processes" (more intuitive then recursion/iteration). and when the function/code is not to large it's not that important...

##### Share on other sites

21 minutes ago, opmo said:

I will make the octave-map function work with octaves numbers as well.

```
(octave-map '(3 3 7 5 6 6 7 7 7 3) '(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4))
=> (c3 d3 e7 f5 g6 f6 e7 d7 c7 cs3)```

Thank you Janusz ! Good Idea !

Happy 2019 !

Best,

Julio

##### Share on other sites

Janusz,

It would be great with some kind of span inside, like this:

```(octave-map '(3 5 6)
'(c3 d3 e3 f3 g3 f3 e3 d3 c3 cs3))

=> (c3 d5 e6 f3 g5 f6 e3 d5 c6 cs3)```

Best,

Julio

Or better:

```(octave-map '(3 5 6)
'(c3 d3 e3 f3 g3 f3 e3 d3 c3 cs3) :span t)

=> (c3 d5 e6 f3 g5 f6 e3 d5 c6 cs3)

Best, ```

##### Share on other sites

1 hour ago, AM said:

i know, LOOPS are not very LISPian! but for me the most simple way "to think such processes" (more intuitive then recursion/iteration). and when the function/code is not to large it's not that important...

Personally, i like very much to use the loop macro facilities, much clear and easy for me than recursion.

Also, I am a big fan of it because it is very powerful.

SB.

##### Share on other sites

This is how all functions work - with span or trim build in.

##### Share on other sites

45 minutes ago, opmo said:

This is how all functions work - with span or trim build in.

Beautiful

##### Share on other sites

Done in version 1.3.24409.

##### Share on other sites

Great, Janusz.

And no more manual updates !!

Best,

Julio

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
• #### Browser

• Video Gallery

• #### Activity

• Lessons

• Clubs
×
• Create New...