Paper on "Application of deep and reinforcement learning to boundary control problems"

Recently, I wrote a paper based on my master thesis project, which I had attempted to submit to AAAI conference. However, the attempt was futile as the reviewers did not really like it. It was quite interesting to see that at least some of the comments by the reviewers are contradictory with each other; it looks like I am not the only one who is lazy to read. Anyway, I decided to make it available for the public via arXiv and viXra. The following are the links to the same. Originally, I had only planned on submitting this to arXiv. When I checked the submission portal a couple of hours after the scheduled publishing time, I saw that the article was put "On Hold" from being published. I searched for the reasons for the same, and I read in a few places that sometimes arXiv takes a lot of time to publish them once put on hold, and sometimes they just don't publish them at all. Therefore, I decided to submit it

My attempt to create a Quine in MATLAB

A few weeks ago, I watched a video on YouTube which talked about quine. A quine is a program that outputs it's own code. For instance, in JavaScript, the following code would output itself.

!function $(){console.log('!'+$+'()')}()

As I watched the video, I was sure that creating a quine is not very easy. But, I found it interesting to attempt to write one on my own, maybe in MATLAB.

During the initial five minutes, I sat on my easy chair and started thinking about how to approach it. I drank a cup of coffee and opened up MATLAB Online and started trying out random things, hoping that I would eventually get some idea. I did not want to cheat by using operations to read from the currently opened file. That can be easily achieved by using the 'type' function or 'fileread' function.

As I was not able to get any idea by just thinking, I decided to have a look at different quines written by people in other languages. I thought perhaps something from JavaScript, Python or C++ would inspire me. I read through the Wikipedia page talking about quine, which has some examples.

After trying and trying for about an hour, I arrived at the following, which is not quite what we need yet,

function y=quine();y='function y=quine();y=REP;y=strrep(y,"REE",y);';y=strrep(y,"REP",['''' y '''']);

If you run the above, the following output would be produced,

function y=quine();y='function y=quine();y=REP;y=strrep(y,"REE",y);';y=strrep(y,"REE",y);

You should be able to see a few issues here. The first and foremost issue is with the inverted commas. That one is really hard to tackle. If I try to add an escape character and attempt to print it at one place, then I would have to do it twice at the other end, which would require me to add two more at the original place, and so on and so forth. The other issue is with 'strrep' trying to replace all occurances of "REP" rather than just the first. To showcase it here, I had changed "REP" to "REE" at one place to avoid multiple replacement.

Now that we know that the issue in this approach is to be able to replace just one "REP" and add an inverted comma effectively, it seems logical to attempt to use 'fprintf' function. However, my attempt was to create a function that would output itself as a function output, rather than simply displaying it. Therefore, I can't use that.

But then, I found a function very similar to 'fprintf', but can store the value to a variable. It's called 'sprintf'. Initially I arrived at the following.

function y=quine();y='function y=quine();y=%s;y=sprintf(y,y);';y=sprintf(y,y);

This one produced the following output:

function y=quine();y=function y=quine();y=%s;y=sprintf(y,y);;y=sprintf(y,y);

It appears to be almost right. Except for the inverted comma to show that 'y' is a string, everything is find here. The only option that I could think of was to use the character code of the inverted comma. The following MATLAB command helped be to get that.

>> char(39)

Intergrating that with the quine code, I got the following.

function y=quine();y='function y=quine();y=%s;y=sprintf(y,[char(39) y char(39)]);';y=sprintf(y,[char(39) y char(39)]);

And yes, that is a quine.


Popular posts from this blog

Bought a new domain -

Started a blog under HexHoot

Created a video to help people get started with HexHoot