I’ve had a more or less continuous (and minor) presence on the web since the mid 90s, when I first created a site to host links to my magazine articles and book information. Until recently, I’d been using labor-intensive hand-crafted HTML for the entire site, but now I’ve switched to WordPress, and this has been a big help.

I currently work for Cisco Systems, Inc., and I am a Contributing Editor for Dr. Dobb’s Journal, one of the last remaining old-school print programming magazines. I’m within just a few hours of completing my MS/CS degree at UT Dallas, whose CS Program is rapidly moving up in the ACM’s ratings.

If you have a specific question about an article you find here, please post it as a follow-up comment – that way everyone gets to benefit from our exchange. Personal email can be sent here (apologies for the anti-spam measures):

## 10 users commented in " About Mark Nelson "

Follow-up comment rss or Leave a TrackbackHi, Mark.

Nice to meet you.

I’m Carlos Eduardo Olivieri. A brazilian student programmer since 12 years old (currently, I have 24). I started with BASIC (QBASIC), have passed through PASCAL (Turbo Pascal), C/C++, Assembly and some other things :). I have always been interested in algorithms, sort, cripto, binaries trees, data compression, memory operations, improve instruction set use, etc.

I read your publication about permutations in C++ with function of STL next_perm(), very interesting and useful, after that I wrote one class method to get the next permutation in Delphi that is the tool most used for me in present days. This function works on lexographic order, I got the algo idea in another site, but now I have with big problem. I’m working with permutations with repetead elements in vector and there are lot of permutations that I don’t need. For example, I have this first permutation for 7 elements in lexographic order:

6667778 (6 = 3 times consecutively, 7 = 3 times consecutively)

For my work I consider valid perm only those with at most 2 elements repeated consecutively, like that:

6676778 (6 = 2 times consecutively at most, 7 = 2 times consecutively at most)

Short, I need a function that return to me only permutations that have at most N consecutive repetitions, according parameter received.

Do you know if there is some kind of algorithm to do that already done?

I intend to write to you more times.

Wait for your contact and sorry for any mistakes in text, I still don’t speak English very well.

Thank you so much,

Carlos

@Carlos:

I don’t have an algorithm for your “at most 2 repeats” requirement, I don’t think I’ve ever run across it. Brute force is my only suggestion :-)

Anyway, thank you very much Mark.

In fact, brute force I also already think :), but I’m trying to find another way, bacause the processing time has been a big problem to me. Hours, days running just one program over very small input dataset.

Regards.

Just a note to say Hi. I don’tknow if you remember me from the 80′s.

Did a bunch of beta stuff for Don Killen in the old days on the C desktop side of things. I was in medical electronics then.

Happy Holidays

Ron

You can delete this reply since it doesn’t go with the article. I didn’t find your email on the site.

My info is:

———–

Personal Email: ron.garlit@gmail.com

Business contact info:

Ronald Garlit

Lead Technical Architect | Distributed Computing .NET TEC

Technologies, Strategy and Operations | American Express Company

Ph: 856.848.7908 | Email: Ronald.A.Garlit@aexp.com

Carlos Eduardo Olivieri:

I wrote some code for your problem. While this may still be regarded as a brute force solution, it is somewhat more efficient than the most naive solutions as it does early pruning. Maybe you can get some ideas from it. A further idea could be to try to find a formula that can be used to determine if a valid string can be built from given frequencies.

Hi mark,

For the Data compression with BWT, can you explain to me the reasons why the BWT is implemented in this manner with the MTF?

why is it done this way rather than in any other way?

what are the advantages to it?

Kind regards

Nothing too tricky here. The GIF encoder is creating nine-bit codes. Unfortunately for the encoder, the files are aligned on eight-bit boundaries. So when the bits of the first code are written out, the lower eight bits are packed into the first byte, then the most significant bit goes into the LSB position of the next output byte. That's why you see a 1 with a pipe symbol on its left hand side - that is the nine-bit boundary.

The 028 is written out next. The lower seven bits are written into the upper seven bits of output byte two, then the upper two bits are written into the lower two bits of output byte 3.

Repeat for each output code.

- Mark

I am searching for 1/f noise in number arrays, also called pink noise, flicker noise, and telegraph noise. 1/f noise is widely claimed to be a feature of the world, and it does show up in every electronic device I have tested so far (I do this for a living.). However there are no accepted theories of why 1/f noise exists.

I have tried to find 1/f noise in the irrational numbers SQRT(2) and pi with no success. Finding such noise would give me a theoretical source to use in simulations and other analysis.

Then I heard about quantum random noise generators. I would like to find a file of quantum random noise digits (or binary) to submit for FFT analysis. My theory is that if such number files produce white noise then they must be random. (So far the SQRT(2) and pi irrational number files have both produced white noise).

If you are aware of quantum, or any physically-derrived, random number files available for downloading by a non-geek please advise.

@missoncat:

There are a number of sites on the internet that are willing to provide you with true random data.

Try: http://www.fourmilab.ch/hotbits/

- Mark

## Leave A Reply

You can insert source code in your comment without fear of too much mangling by tagging it to use the iG:Syntax Hiliter plugin. A typical usage of this plugin will look like this:`[c]`

int main()

{

printf( "Hello, world!\n" );

return 1;

}

[/c]

Note that tags are enclosed in square brackets, not angle brackets. Tags currently supported by this plugin are: as (ActionScript), asp, c, cpp, csharp, css, delphi, html, java, js, mysql, perl, python, ruby, smarty, sql, vb, vbnet, xml, code (Generic).

If you post your comment and you aren't happy with the way it looks, I will do everything I can to edit it to your satisfaction.