Quine

From APL Wiki
Revision as of 23:02, 17 May 2022 by OsKaR31415 (talk | contribs) (add explanations for the quine by OsKaR31415)
Jump to navigation Jump to search

A quine is a program which takes no input and produces a copy of its own source code as its only output.

In APL, a quine is listed in the FinnAPL idiom library as "an expression giving itself":

      12211'''1⌽22⍴11⍴'''

In 2019, Nick Nikolov proposed to shorten it using the commute operator:[1]

      1⌽,9'''1⌽,⍨9⍴'''

Explanation:[2]

  • '''1⌽,⍨9⍴''' the characters '1⌽,⍨9⍴'
  • 9 reshape to shape 9, resulting in '1⌽,⍨9⍴''
  • , concatenate with itself, resulting in '1⌽,⍨9⍴'''1⌽,⍨9⍴''
  • 1 rotate one character to the left, getting the characters: 1⌽,⍨9⍴'''1⌽,⍨9⍴'''

Further Entries

In 2022, APL Farm user OsKaR31415 shared the following:

      '{∊⍵⍺⍵⍺,4/⍵}'{⍵⍺⍵⍺,4/}''''

In this code, the main function is {⍵⍺⍵⍺,4/}. In this function, the right argument is the literal ', and the left argument is the string containing the representation of the function : '{∊⍵⍺⍵⍺,4/⍵}'. The idea behind this quine is that the only thing you need to have a string containing the original code is to reproduce this structure : [quote] [function] [quote] [function] [quote] [quote] [quote] [quote]. So this is precisely what the function does : given the representation of a function (itself in this case), and a string (the quote here), it reproduce the structure `⍵ ⍺ ⍵ ⍺ ⍵ ⍵ ⍵ ⍵`. Another quine is '{∊⍵ ⍺ ⍵ ⍺ ⍵ ⍵ ⍵ ⍵}'{ }'''', and the only thing to notice on this one is the use of so the result is not a nested array of strings, but a flat string. The quite proposed here is very similar, it only replaces the 4 occurences of by 4/ and deletes the useless spaces for the purpose of golfing.

External links