text:
Modified Boggle Checker, with Modified Boggle-able Code
Background
Boggle is a board game where the players have to find English words on a 4-by-4 board of random alphabets. Words can be constructed by selecting sequentially adjacent cells on the board. ("adjacent" means horizontally, vertically or diagonally adjacent.) Also, same cell can't be used more than once in a word.
The following is an example board:
I L A W
B N G E
I U A O
A S R L

On this board, BINGO, ORANGE and WEARS are valid words, but SURGE and RUSSIA are not:

SURGE : There's no adjacent pair on the board having RG.
RUSSIA : S cannot be used twice.

Modified Boggle is a modified version of Boggle, with the following rules:

The board size is n-by-n, where n can be any positive integer.
Each cell can contain any one byte between 0 and 255 inclusive.
A cell can be used more than once, but not twice in a row.

Using the example board above, in addition to BINGO, ORANGE and WEARS, LANGUAGE becomes a valid string (since G is used twice, but not twice in a row) but RUSSIA is still not (due to SS pair).
Here is another example using a code fragment. The string from itertools import*\n can be found on the following board, but not from itertoosl import* or from itertools import *:
f   i   ' ' s
r   t   m   l
e   o   o   p
\n  *   t   r

Note that you need two o's in order to match the oo sequence.
Challenge
Write a function or program that, given a Modified Boggle board B (of any size) and a string s, determines if s can be found on B.
Restrictions
Your code itself should also fit on a Modified Boggle board b. That is, you must show the board b in your submission along with your code, so that your function/program outputs true if it is given b and your code as input.
Scoring
The score of your submission is the side length of the smallest board b where you can fit your code. Ties are broken by the usual code-golf rules, i.e. the length of your code in bytes. The submission with the lowest score (for both criteria) wins.
For example, from itertools import*\n has the score of 4 (using the board above) and code length of 23 bytes.
Input and Output
For input, you can take any convenient method for both B and s. This includes list of chars and list of charcodes, 2D or flattened or whatever makes sense. Also, you can optionally take the board size as a part of the input.
For output, you can choose one of the following:

Truthy and falsy values following your language's convention, or
One predefined value for true and false respectively.

Please specify your input/output method in your submission.

I suspect some esolang that has a very tiny charset that can fit on a 2x2 will win xD

And any Unary program is going to score 4 but is almost guaranteed to lose because of the tie rule against a language efficiently using 4 distinct symbols.

@Arnauld I was thinking maybe tinyBF and when you need two adjacent symbols you just do a +=+= or something like that. The problem is the == output function...

If it wasn't a standard loophole, you create a pseudolanguage by encoding an existing language in a fixed-width base 3 encoding, and then mapping each base 3 digit to a horizontal, diagonal or vertical move on the 2x2 board.

Fair warning: The fact that the board can contain a null byte will make it a lot harder for brainfuck (and derivatives), as well as a few other esolangs

What do "twice in a row" mean?

@l4m2 You can't "stand still" on the same cell, say S, to match SS in RUSSIA.

winner will of course be some base-2 or base-3 language?

http://esolangs.org/wiki/Binaryfuck

@l4m2 Solving with such a language is always welcome, but beware Jo King's warning above.

Is this really [tag:restricted-source]? I think it's just a two-fold challenge (more for non-golfing languages), where you're supposed to find both code and the smallest possible Boggle board in which the code fits.

@EriktheOutgolfer I added it when the challenge asked for fitting the code into 4x4 board (while in the sandbox). Removed the tag as it's no longer the case now.

A solution in BF is almost guaranteed to score 3 if you could solve it.

Do we have a tag for "fewest unique characters" challenges?

@mbomb007 you of course can solve it with a length input or some encoded symbol

Python 2, score 3, 20972 bytes
exec'cecxc%c'%(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1)+…

Full code is the output of: Try it online!
Fits on the Boggle board:
e x (
c % 1
' + )

Decodes and executes this program:
cecxc=any
c,cec=input()
cxec=len(c)
cexec=lambda    cxc,cexc,c,cec:cexc<=''or   cxc[cec][c]==cexc[0]>0<cecxc(cexec(cxc,cexc[1:],cxcxc,cxcec)for cxcxc   in(c-(c>0),c,c+(+1+c<cxec))for  cxcec   in(cec-(cec>0),cec,cec+(+1+cec<cxec))if(cxcxc,cxcec)!=(c,cec))
cxc=range(cxec)
print   cecxc(cexec(c,cec,cexc,cxec)for cexc    in  cxc for cxec    in  cxc)

Which takes input like: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'

Hm, looks like I've found a way to do that in Jelly.

CJam, score 2, 9351 bytes
'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~

Try it online! Expects input like:
["ILWA" "BNGE" "IUAO" "ASRL"]
LANGUAGE

and fits on the Boggle board:
' )
~ )

Constructs the string l~:Q,:K;{\:Y;\:X;:C,!_{;QY=X=C0==_{;[X(XX)]K,&[Y(YY)]K,&m*[XY]a-C1>:D;{~DF}%:|}&}|}:F;l:R;K,2m*{~RF}%:|~ then evaluates it as CJam code.

Unless a built-in exists somewhere (I'm looking at you, Mathematica), a score of 2 is the lowest you can get. So now the challenge is to make a shorter version of the same size.

@EngineerToast Not just any built-in. It has to be a 1-byte built-in, because you cannot use the same boggle space more than once in a row.

@mbomb007 That's exactly what I meant but I did not explicitly say so. The clarification rules out languages like Unary or anything else that's just the same character repeated.

Clean, score 12 (175 bytes)
(This is almost certainly going to be outgolfed by an esolang and probably normal languages as well.)
import StdEnv;>[]_ _ _ _=True;>[c:s]i j n a=i<n&&j<n&&i>=0&&j>=0&&a.[i,j]==c&&or[>s k l n a\\k<-[i-1..i+1],l<-[j-1..j+1]|i<>k||j<>l];$n c a=or[>c i j n a\\i<-[0..n],j<-[0..n]]

This defines a function $ :: Int [Char] {#String} -> Bool which checks whether the second argument (the word) can be found in the third argument (the board) given the first argument as width.
In the board on which this fits (see below), * marks unused places. There are 16 of those, on a board of size 12×12 = 144, meaning 128 are used effectively (an efficiency of 175/128 ≈ 1.37). It may be possible to get the same program on 11×11, but this is all done by hand and very tedious; my boss probably wouldn't be happy if I would try to get it on 11×11.
* * & & * * * * * * * ;
s [ n < j * * u r T > v
  > r & i > * e =   [ n
l k o & 0 = n   ; _ ] E
  & a . = ] a j i > [ d
a n & c [ j . + ] s c t
\ k < - i , - . 1 | : S
\ * 1 l . + 1 = i j |
[ i \ . , ] o a < > k t
0 - < \ a   r >   l ] r
. j , * n j [ i c $ ; o
. n ] ] * *     n i m p

Try it online (with the program itself as input)!

Java, score 23, 538 507 bytes
NSFW
import java.util.function.*;import java.util.stream.*;class B{static BiFunction<char[][],String,BiFunction<Integer,Integer,Byte>>f;{f=(b,s)->(i,j)->{try{if(b[i][j]!=s.charAt(0))return 0;}catch(Exception e){return 0;}if(s.length()<2)return 1;byte t=0;for(int k=9;k-->1;){t|=f.apply(b,s.substring(1)).apply(i+~k%3+1,j+~(k/3)%3+1);}return t;};BiFunction<char[][],String,Byte>g=(b,s)->{int l=b.length;return (byte)IntStream.range(0,l*l).map(i->f.apply(b,s).apply(i%l,i/l)).reduce((x,y)->x+y-x*y).getAsInt();};}}

Try it online!
Compiled with JDK 9, but should work with 8.
I didn't know what to do with the imports and static field (which is in fact necessary), so I decided to just take the whole class and stick the lambdas in a initializer.
The lambda g can then be applied on a 2D array and a string, and returns 1 if the string is in the board and 0 if not (as a Byte, 3 characters shorter than Integer).
Credit to this guy for a (in my case) shorter than hardcoding way to address neighbouring cells.
Somewhere in the progress of making this monstrosity I got invested in making it work with lambdas it got progressively worse and worse until this happened. It doesn't even get close to the other answers and it is probably not even close to the optimal solution in Java, but hey, it fits pretty neatly on a 23x23 board (which is not optimal, but perhaps closer than the program itself):
duce((x,y)->x+y-x*y).ge
e l=b.length;return (bt
rt3+1,j+~(k/3)%3+1);}yA
.n%te t=0;for(int k=rts
)iky0;}catchExcepti9e)I
){~b (b,s)->(i,j)-o;tIn
l>+;n=ring,iFunct>nkunt
/-i1rftass B{stai{ -rt(
i)( u{Slport jatote-nS)
,synt;,cmutil.vinr)> t;
l,lref];i.porfac<y{1tr}
%bpur>[*;amitu. I{r;}e;
i(pt)>].*vaj nuBnie);a}
y=ae)e[m.noitctitft{Bm}
lg.r0traerts.liFe(uti.}
p>))(yhc<noitcnugbr|Fr
pe12tB,regetnI,re[n=ua
at(<Arahc.s=!]j[]i fng
.yg)(htgnel.s(fi};0.ce
)Bnirtsbus.s,b(ylppat(
s,gnirtS,][][rahc<noi0
,b(ylppa.f>-i(pm.)l*l,

Of course, at that point there was no point in trying to make that by hand. So as a bonus, here's the (naive) function I used to compress the code onto the board:
static char[][] toBoggleBoard(String s, int n) {

    char[][] board = new char[n][n];
    int i = n / 2;
    int j = i;
    int[] d = {1, 0};

    s = s + s.charAt(s.length() - 1); //the last char gets eaten don't ask me why PS editing loop condition does make it work but causes a StringIndexOutOfBoundsException
    board[i][j] = s.charAt(0);
    s = s.substring(1);
    while (s.length() > 0)
    {
        int[] ra = add(d, right(d));
        int[] r = right(d);
        int[] l = left(d);

        if (board[i + d[0]][j + d[1]] > 0)
        {
            if (board[i + d[0]][j + d[1]] == s.charAt(0))
            {
                i += d[0];
                j += d[1];
                s = s.substring(1);
            }
            else
            {
                i += l[0];
                j += l[1];
                board[i][j] = s.charAt(0);
                s = s.substring(1);
            }
        }
        else if (board[i + ra[0]][j + ra[1]] == s.charAt(0))
        {
            i += ra[0];
            j += ra[1];
            s = s.substring(1);
        }
        else if (board[i + r[0]][j + r[1]] > 0)
        {
            i += d[0];
            j += d[1];
            board[i][j] = s.charAt(0);
            s = s.substring(1);
        }
        else
        {
            int[] rb = sub(r, d);
            d = r;
            if (board[i + rb[0]][j + rb[1]] > 0)
            {
                continue;
            }
            else
            {
                i += d[0];
                j += d[1];
                board[i][j] = s.charAt(0);
                s = s.substring(1);
            }
        }
    }

    for (int k = 0; k < board.length; ++k)
    {
        for (int l = 0; l < board.length; ++l)
        {
            if (board[k][l] == 0)
            {
                board[k][l] = ' ';
            }
        }
    }

    return board;
}

static int[] left(int[] d) {
    return new int[]{-d[1], d[0]};
}

static int[] right(int[] d) {
    return new int[]{d[1], -d[0]};
}

static int[] add(int[] x, int[] y) {
    return new int[]{x[0] + y[0], x[1] + y[1]};
}

static int[] sub(int[] x, int[] y) {
    return new int[]{x[0] - y[0], x[1] - y[1]};
}

It maps it's input onto a spiralthe snaking implementation didn't work, leaving characters out if possible. It's rather simple so could probably be improved and I forgot to add checking for characters in the backwards-right direction(update: I added it an it produced incorrect results), so I could probably shave off one or two characters but I doubt it's getting on a 22x22.
Edit:
Removed 6 spaces in places they didn't need to be.
Saved 13 bytes by replacing a check on array indices with a try-catch.
Shaved off 12 bytes by moving the board size into an int.

Jelly, 2316 bytes, score 3
1111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111,11111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111,11111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111D§ịØJv

Try it online!
Board:
1,v
D1J
§ịØ

Note: this is a (somewhat) trivial solution. Credit to Lynn for the idea.
Returns a non-empty list if s can be found in B, and an empty list if not. The added footer helps clarifying that.

I wasn't sure if this was allowed. I wanted to return 0 if s could not be found, or a positive integer if it could be found. But the rules state "One predefined value for true and false respectively". Or are empty/non-empty for false/true convention in Jelly?

@Keelan Jelly's "if-like" construct, which, by default, defines truthiness of a value, will consider an empty list to be falsy and any other list to be truthy. It's really just Python 3's convention (since that's what Jelly is implemented in).


text:
Convert text to key presses
I am a robot. I bought this keyboard because of its easy rectangular layout:
~`   !1   @2   #3   $4   %5   ^6   &7   *8   (9   )0   _-   +=
tab  Qq   Ww   Ee   Rr   Tt   Yy   Uu   Ii   Oo   Pp   {[   }]    \|
     Aa   Ss   Dd   Ff   Gg   Hh   Jj   Kk   Ll   :;   "'   [-enter-]
          Zz   Xx   Cc   Vv   Bb   Nn   Mm   <,   >.   ?/
                         [========= space =========]

To print human text, I need to convert it to commands that my manipulators can interpret. My left manipulator hovers over the Shift key. My right manipulator, at the beginning, hovers over the ~ key. The commands that my manipulators understand are:
S      : press the shift key
s      : release the shift key
L      : move the right manipulator left by 1
R      : move the right manipulator right by 1
U      : move the right manipulator up by 1
D      : move the right manipulator down by 1
P      : press the key under the right manipulator
p      : release the key by the right manipulator

Write code to convert any ASCII message to a list of commands. The input can contain any number of the 95 printable ASCII characters; possibly also TAB and newline characters. The output should be the list of the commands to the manipulators.
So, for example, to type Hello World!, the commands are
SRRRRRRDDPp
sLLLUPp
RRRRRRDPp
Pp
UPp
LLLLDDDPp
SLLLUUUPp
sRRRRRRRPp
LLLLLPp
RRRRRDPp
LLLLLLPp
SLLUUPp

I reset the manipulators to initial state before printing each message.
There are some mechanical hazards that should be avoided by proper programming:

No moving (LRUD) allowed when printing (P) is engaged
No jamming of manipulators: when a manipulator is engaged (S or P), the next command for this manipulator should be disengaging (s or p), and vice-versa
No unnecessary shifting: between each two shift (s, S) commands, there should be a P command
So, to print ~~, commands SPpPp are valid, while SPpsSPp are not
No moving out of bounds: no movement command should try to move the right manipulator more than 13 spaces to the right or 4 to the bottom of the initial position (or any spot to the top or left)

Additional notes:

Pressing a disabled key (command sequence like DDPp) results in no keys pressed and is allowed.
Pressing Shift+Tab has no effect, but Shift+Space and Shift+Enter have the same effect as without Shift.
Pressing on any spot on the space bar and the Enter key has the same effect.
Whitespace keys in output have no meaning, but can be used to format it in a beautiful way.

Is speed a problem? Could we return the manipulators to their home position between each character (so long as it doesn't include unnecessary shifting, of course)?

No problem. Maybe it could be more interesting without extra movement, but I don't like requiring the best possible output.

Related one, related two.

You haven't actually defined the task... What character can input contain? What is the actual task (I'm going to guess it's the obvious based on the title, but you should specify nonetheless)

It seems a person typing on a On Screen Keyboard of a Smart TV using its remote control! I feel I do the same when it is me! Was it your inspiration?

Actually, my inspiration was trying to type while all my fingers except two are smeared with mud. But a Smart TV seems more mainstream!

Related with a simpler output but more strict constraints.

Why bother with Pp? As far as I can see those are always a single action and neither P or p can appear on its own.

Pp and Ss look more robotic. I imagine a simple controller inserting delays between commands and connecting commands to electrical motors after simple parsing.

Python 2, 338 337 335 331 325 bytes
x=y=s=0
for c in input():p='`1234567890-=`	qwertyuiop[]|`asdfghjkl;\'\n```zxcvbnm,./``````` ~!@#$%^&*()_+~~QWERTYUIOP{}\\~ASDFGHJKL:"\n~~~ZXCVBNM<>?~~~~~~~ '.find(c);S=[p>61,s][c in' \n'];p%=62;Y=p/14;X=[max(x,12),min(max(x,5),10),p%14]['\n '.find(c)];print'sS'[S]*(s^S)+'LR'[X>x]*abs(X-x)+'UD'[Y>y]*abs(Y-y)+'Pp';x,y,s=X,Y,S

Try it online!

Moves directly from each character to the next.
Explanation:

S=[c in K,s][c in' \n'], checks if the next character should be Upper- or lowercase. If c is a space or newline, the case remains the same.
X=[max(x,12),min(max(x,5),10),p%15]['\n '.find(c)]. If c is a space or newline, the closest x-coordinate to the current is chosen(as the keys span multiple columns)
print'sS'[S]*(s!=S)+'LR'[X>x]*abs(X-x)+'UD'[Y>y]*abs(Y-y)+'Pp', prints the case switch, the number of x-coordinate moves, the number of y-coordinate moves, and finally Pp, for each character

Shorter version, if the shortest path is not required:
Python 2, 294 293 291 287 281 bytes
x=y=s=0
for c in input():p='`1234567890-=`	qwertyuiop[]|`asdfghjkl;\'\n```zxcvbnm,./``````` ~!@#$%^&*()_+~~QWERTYUIOP{}\\~ASDFGHJKL:"\n~~~ZXCVBNM<>?~~~~~~~ '.find(c);S=[p>61,s][c in' \n'];p%=62;X,Y=p%14,p/14;print'sS'[S]*(s^S)+'LR'[X>x]*abs(X-x)+'UD'[Y>y]*abs(Y-y)+'Pp';x,y,s=X,Y,S

Try it online!

Is it really required to use the shortest path to space / enter?

@Arnauld, I guest not, it wasn't specified but the example goes to the nearest space (after o)

JavaScript (ES6), 263 bytes
Takes input as an array of characters.
s=>s.map(c=>(y=i-(i=(j=`\`~1!2@3#4$5%6^7&8*9(0)-_=+00\t0qQwWeErRtTyYuUiIoOpP[{]}|\\00aAsSdDfFgGhHjJkKlL;:'"
${1e6}zZxXcCvVbBnNmM,<.>/?${1e13} `.indexOf(c))>>1),g=k=>'LRUD'[n=k?y/14:y%14,k^=n<0].repeat(n<0?-n:n))()+g(2)+['sS'[j-s&c!=' '&c!=`
`?s^=1:2]]+'Pp',i=s=0)

Try it online!

.COM opcode, 108 104 bytes
0000h: B4 00 CD 16 BE 50 01 83 C6 03 3A 24 77 F9 0F B6
0010h: DC 03 5C 01 B4 02 CD 16 B4 02 68 00 01 A8 03 B2
0020h: 53 74 08 81 36 20 01 20 01 CD 21 84 DB 74 0B 4B
0030h: B2 52 E8 F4 FF B2 4C CD 21 C3 84 FF 74 0C FE CF
0040h: B2 44 E8 E4 FF B2 55 CD 21 C3 B2 50 CD 21 B2 70
0050h: CD 21 C3 0D FE 00 1B F1 00 1C F0 01 28 E3 01 29
0060h: D7 FF 35 D6 02 39 CC 03

Take input from keyboard with CapsLock off
Badly golfed though
        org 100h
        mov ah, 0
        int 16H
        mov si, table-3
tabing: add si, 3
        cmp ah, [si]
        ja tabing
        movzx bx, ah
        add bx, [si+1]
        mov ah, 2
        int 16H
        mov ah, 2
        push 100H
        test al, 3
        mov dl, 'S'
cmd:    jz fun
        xor [cmd-1], word 0x120
        int 21H
fun:    test bl, bl
        jz bl0
        dec bx
        mov dl, 'R'
        int 21H
        call fun
        mov dl, 'L'
        int 21H
        ret
bl0:    test bh, bh
        jz bh0
        dec bh
        mov dl, 'D'
        int 21H
        call fun
        mov dl, 'U'
        int 21H
        ret
bh0:    mov dl, 'P'
        int 21H
        mov dl, 'p'
        int 21H
        ret
macro key begin, end, U, L {
        db end
        dw U*256+L-begin
}
table:
        key 0x02, 0x0D, 1, 0
        key 0x10, 0x1B, 1, 1
        key 0x1C, 0x1C, 2, 12
        key 0x1E, 0x28, 2, 1
        key 0x29, 0x29, 0, 0
        key 0x2C, 0x35, 3, 2
        key 0x39, 0x39, 4, 5

A great idea to do that without a LUT!

Take input from keyboard
How is our robot friend, who is asking for help using his keyboard, to make use of this program?

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Cartesian product of a list with itself n times
When given a a list of values and a positive integer n, your code should output the cartesian product of the list with itself n times.
For example, in pseudocode your function could be similar to:
for x1 in list:
    for x2 in list:
        for x3 in list:
            ...
            for xn in list:
                print x1, x2, x3, ... , xn

Example:
repeated_cart([1,2,3], 3)

1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3

Built in functions (or functions from imported libraries) that compute the Cartesian product or Cartesian power are not allowed due to the resulting code being somewhat boring.
Inputs and outputs should be delimited but can be taken in any reasonable method. The order the output is given does not matter but duplicates are not allowed.
This is code-golf so shortest code wins

Welcome to PPCG! Nothing horribly wrong, but take some time to look at this meta post and answers.Things to avoid when writing challenges

and to follow on @JayCe 's point, you could (should) post in The Sandbox to get feedback before posting a question :-)

@Giuseppe Ok, I'll do that from now on, thanks :)

Borderline dupe of https://codegolf.stackexchange.com/q/125104/194

@JoshuaMartin can we use builtins that return all n-tuples over 0...m-1?

@ngn sure but you'll need to make sure the output is in the right order

The Cartesian product is an operation on sets. Do you allow sets for I/O rather than lists?

@Jakob sets should be fine

My R program has the output in a different order than your example. You say "make sure the output is in the right order"  but what does that mean? Could you put that in the question body so it's clear for future answers?

@Giuseppe sorry, I realise now that order does not matter

Haskell, 21 bytes
l#n=mapM(\_->l)[1..n]

Try it online!

R, 41 bytes
function(l,n)unique(t(combn(rep(l,n),n)))

Try it online!
combn is definitely not a cartesian product built-in, as it computes all n-combinations of its input.
R, 40 bytes
function(l,n)expand.grid(rep(list(l),n))

Try it online!
expand.grid is probably a cartesian product built-in.

Looks like the order of permutations in your main submission is wrong.

@KirillL. is there a particular reason the order is important? I interpreted the output spec as being flexible enough to allow them in any order.

there is OP's comment "make sure the output is in the right order", I presumed "right" means same as in example.

@KirillL. Ah. Didn't see that; it's not in the body of the question so I did not know it existed! I'll ask that it gets put there for clarification.

Common Lisp, 146 bytes
(defun f(l n)(if(< n 2)(loop for x in l collect(list x))(loop for a in l nconc(loop for b in(f l(1- n))collect(cons a b)))))(princ(f(read)(read)))

Try it online!
ungolfed
(defun nloops (lst n)
  (if (< n 1)
      '(())
      (if (< n 2)
          (loop for x in lst collect (list x))
          (loop for a in lst
                nconc (loop for b in (nloops lst (1- n))
                            collect (cons a b))))))

typically we suggest waiting for other submissions before posting one of your own :-)

@Giuseppe Ok, thanks  for the advice :)

I should say, it's technically not required anywhere but you'll accumulate random downvotes (as you already have) which is unfortunate considering this is a perfectly reasonable answer.

@Giuseppe i'll keep that in mind.

you don't have to have the print statement in the submission, since a function is allowed

so: 96

90

Perl 6, 16 bytes
{[X,] $^a xx$^b}

Try it
Expnded:
{  # bare block lambda with placeholder parameters $a and $b

  [X,]         #reduce using Cross meta op combined with comma op

    $^a xx $^b # list repeat $a, by $b times
}

APL (Dyalog Classic), 18 12 bytes
{⍺[↑,⍳⍵⍴≢⍺]}

Try it online!
-6 bytes thanks to @ngn !

you can use ⍳ with a vector argument to generate indices and then ⍺[ ] to get the corresponding values

I got a RANK ERROR when I tried to do that.

⍺[↑,⍳⍵⍴≢⍺]

the only catch is with ⍵=1, in that case ⍳ returns a plain vector, not a vector of nested length-1 vectors as one would expect; it's one of those bugs that never get fixed, for backwards-compatibility reasons

K (ngn/k), 10 bytes
{x@+!y##x}

Try it online!
{ } is a function with arguments x and y
#x the length of x
y##x the length of x repeated y times
!y##x all length-y tuples over 0,1,...,length(x)-1 as a transposed matrix
+ transpose
x@ elements of x at those indices

Python 2, 69 58 bytes
f=lambda a,n:n and[v+[i]for v in f(a,n-1)for i in a]or[[]]

Try it online!
Takes a list a and an integer n; returns a list of lists.

Perl 5, 33 bytes
say for glob(join',',("{$_}")x<>)

Try it online!

Nice! So many answers have been able to utilise this lately! You can save 2 bytes with a bit of juggling: Try it online!

Prolog (SWI), 72 bytes
R-1-R.
L-N-R:-O is N-1,L-O-M,findall([H|T],(member(H,L),member(T,M)),R).

Try it online!

Ruby, 53 bytes
f=->l,n{n<2?l:l.flat_map{|i|f[l,n-1].map{|j|[i,*j]}}}

Try it online!
Recursive approach, not so short, but guaranteed to be free of any built-ins.
It's tempting to use permutation methods, but this probably doesn't count, and the docs actually state no guarantees of the order correctness, although seems to work in practice:
Ruby, 35 bytes
->l,n{[*l.repeated_permutation(n)]}

Try it online!

Jelly, 11 9 7 bytes
³;þẎƊ’¡

Try it online!
Explanation
³;þẎƊ’¡
³;þẎ    **Implements** the cartesian product of a value with the input
    Ɗ   Groups those together
     ’¡ Repeat (n-1) times

Look at OP's comment :p

My comment to which I brought it up is: "I'm also assuming builtins for the entire challenge are also disalowed," so I just assumed this is okay.

Well, let's wait for OP then

@Zacharý sorry, the cartesian power function isn't allowed

There, I fixed it to not use the cartesian power built-in

Is þ allowed if it is a cartesian product quick? If it's not €Ɱ works

Outer product

The portion that's doing the work is ;þ.

Technically ×þ is an outer product. The outer product is just the cartesian product with the resulting pairs multiplied, so þ is better described as a cartesian product imo.

It's called table.  And it can be done without generating the cartesian product.

[[dyadic_link(link, (u, v)) for u in iterable(x, make_range = True)] for v in iterable(y, make_range = True)], that code is the relevant Jelly code. Nowhere does it calculate the cartesian product

I don't know, two nested for loops like that is basically the definition of a cartesian product. I'm not saying you should change it though, I just think banning the built-in in this challenge is kind of unclear.

Let us continue this discussion in chat.

Java 10, 19 + 135 = 154 bytes
import java.util.*;

List<List>f(Set l,int n){var o=new Stack();if(n<1)o.add(new Stack());else for(var t:l)for(var i:f(l,n-1)){i.add(t);o.add(i);}return o;}

Try It Online
Ungolfed
List<List> f(Set l, int n) {
    var o = new Stack();
    if (n < 1)
        o.add(new Stack());
    else
        for (var t : l)
            for (var i : f(l, n - 1)) {
                i.add(t);
                o.add(i);
            }
    return o;
}

Acknowledgments

port to Java 10 thanks to Kevin Cruijssen

If you use Java 10 instead of 8, you can change Object and List in the for-each loops to var for -4 bytes. In addition, you can then change Set<List>f to List<List>f and Set o=new HashSet(); to var o=new Stack(); for an additional -1 byte. Try it online.

Hmm. is leaving out types for lambdas no longer valid

@ASCII-only No, untyped lambdas are allowed. I couldn't use a lambda here because the solution uses recursion.

@Jakob ah, that's right >_>

Racket, 92 bytes
(define(f l n)(if(> n 0)(apply append(map(λ(r)(map(λ(e)(cons e r))l))(f l(- n 1))))'(())))

Try It Online
Ungolfed
(define (f l n)
    (if (> n 0)
        (apply append
            (map
                (λ (r)
                    (map (λ (e) (cons e r)) l)
                )
                (f l (- n 1))
            )
        )
        '(())
    )
)

Pure Bash (no external utilities), 57
printf -vn %0$1d
a=${n//0/{$2\}}
eval echo ${a//\}{/\},{}

Input is given as command-line parameters; 1st is n, 2nd is a comma-separated list.
printf -vn %0$1d         ;# Create a string of n "0"s in the variable v
a=${n//0/{$2\}}          ;# Replace each "0" with "{a,b,...m}"
eval echo ${a//\}{/\},{} ;# Replace each "}{" with "},{" and evaluate the resulting brace expansion

Try it online!

J, 17 10 bytes
-7 bytes thanks to Jonah!
>@,@{@(#<)

Try it online!
Original soluton:
J, 17 bytes
]{~(##)#:#@]i.@^[

How it works?
I enumerate all the n-digit numbers in a number system with base the length of the list.
            i.         - creates a list from zero to (not including)
         #@]           - the length of the list
              @^       - to the power of
                [      - n (left argument)
   (##)                - creates a list of n times the length of the list (for the bases)
       #:              - converts all the numbers into lists of digits in the new base
]{~                    - use the digits as indices into the list

Try it online!

>@,@{@(#<) for 10.  You can remove the >@ for 8 if boxed output is acceptable.  Try it online!

Oracle SQL, 177 bytes
Create a collection type (31 bytes):
CREATE TYPE t IS TABLE OF INT;

Then use the query (146 bytes):
WITH n(a,b,c)AS(SELECT a,b,t()FROM i UNION ALL SELECT a,b-1,c MULTISET UNION t(COLUMN_VALUE)FROM n,TABLE(n.a)WHERE b>=0)SELECT c FROM n WHERE b=0

Assuming that the input parameters are in the table i with columns a and b:
CREATE TABLE i (a t,b INT) NESTED TABLE a STORE AS t_a;
INSERT INTO i VALUES ( t(1,2,3), 3 );

SQL Fiddle
Results:
|     C |
|-------|
| 1,1,1 |
| 1,1,2 |
| 1,1,3 |
| 1,2,1 |
| 1,2,2 |
| 1,2,3 |
| 1,3,1 |
| 1,3,2 |
| 1,3,3 |
| 2,1,1 |
| 2,1,2 |
| 2,1,3 |
| 2,2,1 |
| 2,2,2 |
| 2,2,3 |
| 2,3,1 |
| 2,3,2 |
| 2,3,3 |
| 3,1,1 |
| 3,1,2 |
| 3,1,3 |
| 3,2,1 |
| 3,2,2 |
| 3,2,3 |
| 3,3,1 |
| 3,3,2 |
| 3,3,3 |

Jelly, 5 bytes
ẋœ!ṛQ

Try it online!
Completely different method to Adalynn's existing answer, plus two bytes shorter, so I thought I'd post a separate answer.
The Footer in the TIO link simply runs the above link then checks to see if the result is the same as the Cartesian power builtin. Remove it to see the full output
Same as the old version is length, but more tacit.
How it works
ẋœ!ṛQ - Main link. Takes a list l on the left and n on the right
ẋ     - Repeat l n times; Call this m
   ṛ  - Right; Yield the right argument n
 œ!   - Yield all permutations of m of length n
    Q - Remove duplicates

The previous answer, ẋ⁹œ!Q used a 2-0, 2, 1 chain, where the ⁹ was necessary to prevent the œ! chaining to the ẋ. In this version, we have a 2, 2, 2, 1 chain. As it is at the start of the chain, the special 2,2,2 pattern is matched, meaning we execute the first three dyads, then deduplicate whatever that results in.
For three dyads x (f g h) y, we calculate (x f y) g (x h y) with this 2,2,2 pattern. f here is ẋ, meaning we repeat the list in x y times. h is ṛ, which takes two arguments and returns the right one y. Therefore, we're passing the repeated list to œ! on the left and y on the right, thus getting the permutations of length y.

Octave, 38 bytes
@(x,n)x(dec2base(0:n^numel(x)-1,n)-47)

Anonymous function that takes a row vector of values and an integer.
Try it online!

Bash, 61 bytes
N=$1
shift
IFS=,
printf echo\\t%${N}s ""|sed "s/ /{$*},/g"|sh

Try it online! I found repeating strings and joining lists with commas surprisingly hard to do in bash.

Javascript (Node), 75 bytes
c=(m,n,a,i)=>a.length-n?m.map((_,j)=>c(m,n,[...a,m[j]],i+1)):console.log(a)

Recursive function which outputs the list to the console. Where a is an empty array and i is 0 (not sure if this still qualifies):
c([1,2,3], 3, [], 0);

Try it online!

I think you would have to do (m,n,a=[],i=0)=>

JavaScript (SpiderMonkey), 52 bytes
c=>g=(n,...l)=>n?c.map(w=>g(n-1,...l,w)):print(...l)

Try it online!

CJam, 26 bytes
q~(_"m*:e_"*\'_*@\~W$~:p];

Try it online!
If only CJam had one character commands for cartesian product and flattening.

Pyth, 5 bytes
.nM**

Try it online!

Vyxal, 5 bytes
ẋf⁰↔U

Try it Online!

Pari/GP, 46 bytes
(l,n)->matrix(#l^n,n,i,j,l[i--\#l^(n-j)%#l+1])

Try it online!

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Code-generator with unique characters
Challenge
Your task is to write a piece of code that outputs another piece of code. That code must in turn output yet another code until the final code outputs the integer 1. The chain ends the first time 1 is outputted.
None of your programs may share any characters (there's one exception in the Rules-section).
The winning submission will be the submission with the longest chain. The tie-breaker will be shortest total code-length.

Rules:

You may use both functions, programs and snippets. You may assume a REPL environment.
All functions must be written in the same language
Symbol independent languages are disallowed. This includes partially symbol independent languages such as Headsecks.
Default output formatting may optionally be disregarded in a function's output. This includes trailing newlines, ans = etc.
You may reuse the space character (ASCII code point 32), but note the following:

You may use as many space characters as you like in one of the functions, but restrict it to maximum 5 in all other functions
You may not reuse any characters if code point 32 is not space in your language.

None of the programs may take input
The chain must be at least two programs long.

Example:
Your initial code is abc+cab+bac. This outputs: foofoo*123, which in turn outputs disp(~0), which outputs 1. This is a chain of 3 programs, with a combined length of 29 (tie breaker).

Related

Somewhat related

To make sure I understood: the programs may use comments, right? I mean, parts of code that are "useless"

@LuisMendo Yes... I'm curious to see how that will help you though :)

@StewieGriffin Not much really :-) It only makes code length arbitrarily large, but it doesn't seem to help in extending the number of chain links

If the language prints strings with quotation marks, can the next program just contain the string without the quotes, or does the next program always have to be literally the entire output of the previous one?

Is it ok if we cannot prove or disprove the chain will eventually output a 1?

@Rzu You must prove that it will output 1 in the end.

@ngm quotes must be included.

The output of each program should be a string (or equivilant), yes? For example, lambda:lambda:1 isn't valid since it returns an function?

Are simple expressions allowed? For example, could the final link of a Python program be 2^3, which would just evaluate to 1, or does it have to be e.g. lambda:2^3, print(2^3), etc.?

If a function/snippet returns a string, are the string contents considered to be the code? The current top Java 8 answer uses this fact.

May the programs share boilerplate, such as int main() and the like?

In languages where literals can be programs (such as in a lot of the golfing langs), can 1 be both a program and the output of that program or does the chain end when 1 is the output?

@nneonneo simple expressions are allowed. That's what is meant by allowing "snippets".  Have a look at this answer to another challenge. Such answers are allowed.

@Emigna the chain ends when 1 is the output.

@ollien stuff like this and this is valid. Does that answer the question?

Exactly what output types are allowed for a language that has strings? Just strings, or would an array of bytes/chars/code points be allowed?

@Jakob everything that can be copied and use as code directly.

Probably because it's very very hard. Until someone comes along and posts one with 12 programs. :-)

Are we allowed to count the output 1.0 as part of the chain, since you state "Default output formatting may optionally be disregarded in a function's output."? So ABC -> 1.0 -> 1 (chain of 2)? (What if I don't want to disregard it to improve the amount of chains.)

That's what optionally means :-) X -> 1.0 -> 1 may count as 2. X -> 1-> 1 counts as 1. Note that the final output should be 1, not 1.0.

05AB1E, 5-chain: 236 + 29 + 13 + 3 + 1 = 282 bytes
10101100011010001101100010110110001111000111001110101001000000000010111100100110011011010110011000100110101001001101100001110001111010100100000100010010001010011101011001110001000001011010101111001110011110001010111100001110110C₁<Au¦н.V

Try it online!
which prints the program
633693S<J6bαð3<žQTÌ>è9663тαhJ

Try it online!
which prints the program
522472 2-255B

Try it online!
which prints the program
88ç

Try it online!
which prints the program
X

Try it online!
which prints 1

8784>žxB and I'm probably KO'd. The lack of numbers for base conversion is a total crapshoot unless you calc it. The goal, if you want to beat emigna, is use the least amount of unique numbers per iteration. His answer reigns supreme because of the 88 in the second to last iteration. Truly a great answer.

@MagicOctopusUrn: We could easily free up 10 and make something in binary. But I don't know if we can generate the first program from binary without B.

I'll try again tonight to beat you, but if I don't I'm giving you the bounty. Doesn't seem like many are interested (or able (including me)).

@MagicOctopusUrn: Your task may be a bit harder as I believe I have a 5-chain ;)

Oh you... beautiful human being. Guess I'll still take a whack at it. I can at least post a 4 chain if it isn't close.

I'm just going to assume this KO'd me, I only have 2 hours tonight. If I find a 6 chain you owe me a bounty ;P

@MagicOctopusUrn: I'll be happy to :) This was a very fun challenge!

Congrats for getting the 5th chain!

Java 8, chain of 2 functions, 90+10 37+4 28+4 = 32 bytes
o\u002D\u003E"\44\55\76"+2/2

Which is equivalent to:
o->"$->"+2/2

-57 bytes thanks to @OlivierGrégoire.
Try it online.
Which returns the String:
$->1

Try it online.
Which returns the integer:
1

\u0076\u002D\u003E\u0022\u0076\u002D\u003E\u0022+(3\u002D2) (59 bytes+4 bytes). The rules says "None of your programs may share any characters", so v->1 is valid because the final 1 isn't a program.

39 bytes + 4 bytes

@OlivierGrégoire I knew v->1 returning 1 is valid, but in my original answer \u0031 would contain a 1, and v->1 would then contain a 1 as well. Nice combination of both unicode Java and regular Java, though. And I golfed 2 more by changing (2/2) to 2/2. (PS: There is also already a chain-3 Java answer by Jakob.)

@OlivierGrégoire Correction, I've been able to golf it to 28+4 by using "\44\55\76" instead of "\u0076\u002D\u003E"

Nice golfing on top of mine ;) I haven't checked the 3-chain answer yet. I'll do it right now.

I think that the 3-chain answer is invalid, unfortunately. Can you double-check my reasoning please?

What a beauty

I want to give this more than +1, but I already bountied another D:

R, 3-chain 198 + 44 + 3 bytes
`+`=`\143\141\164`;+"\143\141\164\050\151\156\164\124\157\125\164\146\070\050\143\050\070\070\055\071\055\071\054\071\071\071\055\070\070\071\055\070\055\070\054\070\070\055\071\055\071\051\051\051"

Try it online!
Returns :
cat(intToUtf8(c(88-9-9,999-889-8-8,88-9-9)))

Try it online!
Returns :
F^F

Try it online!
Returns 1
Explanation :
The first program is almost totally written in octal representation, where each character is written as \xxx where xxx is the ASCII code in octal mode. In human readable form would be :
`+`=`cat`;+"cat(intToUtf8(c(88-9-9,999-889-8-8,88-9-9)))"

Here, to avoid the use of round brackets we redefine the prefix operator + equal to cat function, then we use that to print the next string. Even after assigning cat to +, the latter still keeps its prefix operator "status" and will just take whatever follows it as its first parameter.
The second program, simply prints the characters F^F obtaining them from decimal ASCII : 70,94,70
Since in the first program we used the octal representation, only numbers 8 and 9 are free to be used; hence, we obtain 70 and 94 with some differences between numbers with only 8's and 9's.
Finally, the last program, F^F, exploits the ^ function (power of) which coerces FALSE to 0 and computes 0^0 returning 1
Credits to :

@ngm for the first 2-chain idea
@Giuseppe for the hint to use octals in functions
@BLT and @JayCe for the idea to override + in order to avoid brackets

Previous version :
R, 2-chain 27+3 24 + 2 bytes
cat(intToUtf8(c(49,76)))

Try it online!
Returns:
1L

Try it online!
Returns 1.

Nice one! Is cat mandatory?

cat is the shortest way to get rid of quotes. write("1+F","") and substitute(1+F) will also print without quotes, but they all have the letter t in them so I can't think of a way to get a chain of 3. I'm just happy for any R answer in a code-generation challenge!

I just saw that you asked in the comments whether quotes have to be removed. and the answer is yes :(. Maybe @Giuseppe will be able to come up with a magic solution? I am stuck too.

cat(intToUtf8(c(48,94,48))) uses only 3 different digits and returns 0^0

And eval(parse(t="foobar")) also as a t... agree with you, it's great to see an R answer I just wish there was a way to expand it :)

eval(parse(,,"foobar")) does the same without a t. But now there's the a. There's also bquote which still doesn't help.

Well potentially you could have an output as a string with "wri\164e"(function args) to avoid a t or other similar encodings

I can't think how is possible to do better than 2-chain in R because of the necessity of round brackets... I mean, the default print method returns values with quotes, so you need at least cat/message at the first step, and then in the next ones you won't be able to use brakets anymore and therefore no functions as well...

@Giuseppe @digEmAll According to the latest comments to the question cat(intToUtf8(c(49,76))) would work and is a bit shorter. Doesn't expand the chain though.

@digEmAll See BLT's comment to my answer to another challenge... I think there might be something here.

@JayCe: Maybe this ?

@digEmAll wow. We have a length 3 chain.

A little shorter 198+44+3

I've made this answer a Community Wiki. Please feel free to add this with a little explanation.

Python 2, 2-Chain, 7+44 = 51 bytes
lambda:("7072696e74203"+`3-2`).decode("hex")

and
print 1

Try it online!
The base 16 code translates to print 1, which is returned by the anonymous function.

Octave, 3 programs, Length 42 bytes
char("``;8%79b/7%,,b"-5)

Outputs: [[63 24]*2 ''].
Try it online!
[[63 24]*2 '']

Outputs: ~0. Try it online!
~0

Outputs: 1. Try it online!

Perl 5, 3-chain, 151 139 chars (114 + 20 + 5)
&{"CORE::SYSWRITe"|"CORE::39372!4"}(STDOUT,"\x70\x72\x69\x6E\x74\47\x50\x42\x5A\3\22\47\x5E\47\43\43\43\43\43\47")

The ugliness inside the &{ } evaluates to CORE::syswrite, and so the hex-escaped string is printed to standard output as:
print'PBZ^C^R'^'#####'

Please note that the ^C and ^R in the above represent literal control characters. (And not to be confused with the literal ^ caret that occurs between the two strings.)
This program in turn outputs:
say 1

Cjam, 4-chain, 28+20+3+1=52 bytes
Snippet 1:
"tugshrm\x18$\x18vj\x1b\x07um~l$\x1b"{71^}%

Snippet 2:
32 4/5*_c_1-\@2*9+c\

Snippet 3:
'Y(

Snippet 4:
X

Which then prints 1.
Try it online!
Note:

Since Cjam does not have interpretation for escape characters, the ones in snippet 1 are only there for better web view. You need to use the corresponding actual characters to run the snippet.
If I cannot shave off more characters, then good job to @Emigna for the 05AB1E answer!

In snippet 2 you've reused the character 1 used in snippet 1

See my note please. The escape characters are for the reader's convenience, in Cjam there are no escape characters, or they would not translate into the characters you think would in languages like C or python. When testing, you literally have to enter the characters manually instead of using the escape characters.

Excel, Chain 2, 27+3 bytes
=CHAR(45)&CHAR(45)&CHAR(49)

Not sure if this is OK...

Shouldn't there be a CHAR(61)& in the beginning as well for there to be a chain of 2?

You should use french instead of english (CHAR become CAR, 3 bytes saved), not sure if another language reduce it more

@Emigna But it seems typing --1 in a cell and hit enter, it would just show 1 on the screen...

@tsh: Hmm, yeah it seems like Excel adds the = implicitly if you type --1.

Can you use +1 instead of --1?

@Neil Excel does not insert a = mark for +1 (but it does for --1), so I won't consider it as an expression. And I'm not sure if simply writing an 1 in the cell and call it "output 1" is valid. That's why --1 is used.

x86 bytecode, Chain 2, 10+4 bytes
(Assembled with FASM, format PE)
ÇA.Ï?¿<÷Y. produces 1À@Ã in the address next to it and executes it, which returns 1 in eax (as per fastcall).
In both cases the . actually represents A or LF.
In hex: C7 41 0A CF 3F BF 3C F7 59 0A and 31 C0 40 C3.
Disassembled:
mov dword ptr ds:[ecx+A],3CBF3FCF
neg dword ptr ds:[ecx+A]

produces
xor eax,eax
inc eax
ret

This (ab?)uses the fact that the entrypoint of the program is stored in ecx, and then writes the inverse of the to be executed code to the address 10 bytes over and negates it.
May or may not break if assembled with anything but fasm, to anything but a PE or with a different entrypoint.

JavaScript REPL, lots of bytes, 4 iterate
(+!![]+[!![]+!![]+!![]+!![]]+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+![]+(!![]+!![]+!![])+![]+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![])+![]+![]+(+!![])+(!![]+!![])+![]+(+!![])+(!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(+!![])+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(+!![])+(!![]+!![]+!![])+![]+![]+(!![]+!![]+!![])+![]+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![])+![]+![]+(+!![])+(!![]+!![])+![]+(+!![])+(!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(+!![])+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(+!![])+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+![]+(+!![])+(!![]+!![])+![]+(+!![])+(+[])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(+!![])+(+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+![]+(+!![])+(!![]+!![])+![]+(+!![])+(+[])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(!![]+!![])+![]+(!![]+!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![])+![]+![]+(+!![])+![]+(!![]+!![])+![]+(!![]+!![]+!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(!![]+!![]+!![]+!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(!![]+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+![]+(+!![])+![]+(+!![])+(+[])+![]+(+!![])+(+!![])+![]+(+!![])+(!![]+!![]+!![]+!![]))[(![]+[])[!![]+!![]+!![]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[+!![]])()([][[]]))[+!![]+[+[]]]+(![]+[])[!![]+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[+[]]](![])[(+(!![]+!![]+[+[]]+(+!![])+(!![]+!![])+(!![]+!![]+!![]+!![]+!![])))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([]+[])[([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]][([][[]]+[])[+!![]]+(![]+[])[+!![]]+([]+(+[])[([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]])[+!![]+[+!![]]]+(!![]+[])[!![]+!![]+!![]]]](!![]+!![]+!![]+[+[]])](([]+[])[([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[+!![]])()(+[]+[![]])[!![]+!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+!![]]+(+[![]]+[][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]())[+!![]+[+!![]]]+(!![]+[])[+[]]][([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+([![]]+[][[]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+([][[]]+[])[!![]+!![]]]([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]+[+[]]]+(![]+[])[+!![]]+(![]+[])[!![]+!![]])()(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+!![]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[+!![]])()(![]+[![]])[+!![]+[+[]]]+(!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!![]+!![]+!![]+!![])+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+!![]+!![])+(!![]+!![])+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(![]+[])[+[]]+(!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!![]+!![]+!![]+!![]+!![])+([][[]]+[])[!![]+!![]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+(!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])))[([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([![]]+[][[]])[+!![]+[+[]]]+([][[]]+[])[+!![]]]([])
"\x60\44\x7b\55\x7e\x7b\x7d\x7d\44\x7b\55\x7e\x7b\x7d\x7d\x60\56\x73\x70\x6c\x69\x74\x60\x60\56\x74\x6f\x53\x74\x72\x69\x6e\x67\x60\x60"
`${-~{}}${-~{}}`.split``.toString``
1,1
1

Too lazy to optimize the JSFUCK code
JavaScript REPL, 164 bytes, 3 iterate
may be able to expand
[g=222222222222222222,e=2e40,f=2e23,f,2e40,n=2222e49,r=2e24,2e30,e,n,r,8e28,2e40,n,r,9e29,g].map(S=>String.fromCharCode(Math.log(S))).join([])
'\55\x7E\x7B\x7D'
-~{}
1

Try it online!

@JoKing I didn't use 1 in other pros, so the first 1 is program and the 2nd one is result

Aren't you reusing the {}s?

@Neil Fixed and optimized

"The chain ends the first time 1 is outputted."

MATL, 5 programs, 404+159+35+4+1 = 603 bytes
Getting to 4 programs was hard. 5 programs was very hard!
'/'37 13+3+3+'3`/'37 13+3+3+77 13+37 13+3+3+'3`/'37 13+3+3+'3tttttttt`/'37 13+3+3+'3#'37 13+3+3+'3ttttt`'37 13+3+3+'3ttttt'37 13+3+3+77 13+'/'37 13+3+3+'3`<<tttttttttt'37 13+3+3+'3#'37 13+3+3+77 13+37 13+3+3+'3///<3////t````ttttt```<</////t`````t<3tttttttttt<3tt/'37 13+3+3+'3ttttttttt'37 13+3+3+'3`{'37 13+3+3+77 13+'y$'37 13+3+3+'3/////t`````ttI#I'77 13+3+'dk'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh3_+''h

Try it online!
,50],5W50],50qqqqqqqq],50 50qqqqq]50qqqqq5W,50]99qqqqqqqqqq50 5W50,,,90,,,,q]]]]qqqqq]]]99,,,,,q]]]]]q90qqqqqqqqqq90qq,50qqqqqqqqq50]x5Wv!50,,,,,q]]]]]qqF FZah

Try it online!
This might be my favorite program I've written on PPCG:
22 2 2**2-2-- 22Y2 2EEEEEEEEBPX)2)

Try it online!
84
c

Try it online!
T

Try it online!
Explanation:
Having used hours on this program, I won't write the entire explanation now! I'll write it later!
Short summary:
T            -> Literal true = 1

84c          -> Convert 84 to its ASCII-character T

22 2 2**...  -> Calculate 84 using only 2, * and -
 22Y2        -> 22Y2 is a cell array with the name of all the months
 2EE..B      -> Is 512 in binary [1 0 0 ...]
 P           -> Flips is, [0 0 ... 1]
 X)          -> Uses the binary vector as index and gets the 10th element
             -> 'October'
2)           -> The second character, 'c'
             -> Resulting in the stack: 84, 'c' that's implicitly printed

,50]...      -> A string with ASCII character codes of '22 2...
             -> There's a lot of ,xyz], which means "do twice" and q which is decrement

In order to convert this to a string instead of character codes, we need to concatenate it with a string using h. To get a string, without using quotes, or the XY modifiers, we do base conversion and convert an integer to whitespace.

'/'37 13 ...  -> Concatenation of strings and character codes using only available numbers
3_+           -> Subtract 3 from all character codes to get the correct ones
''h           -> And concatenate with the empty string.

CJam, 7-chain, 92365+1819+79+14+9+3+1 bytes
This 92365-byte program prints
YaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR1+1+1+1+1+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR1+1+1+1+1+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+11+YaY+`$1<mR1+11+11+YaY+`$1<mRYaY+`$1<mR1+1+1+1+1+1+11+1+1+1+1+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR1+11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+11+11+11+11+11+1+1+1+1+YaY+`$1<mR11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+YaY+`$1<mR1+1+11+11+11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+1+1+1+11+11+1+1+YaY+`$1<mR11+11+YaY+`$1<mR1+1+1+1+1+1+11+1+1+1+YaY+`$1<mR1+11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+11+11+YaY+`$1<mR1+1+11+YaY+`$1<mR1+11+YaY+`$1<mR1+1+1+1+1+11+11+1+1+YaY+`$1<mR11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+YaY+`$1<mR1+1+1+1+1+

which prints
34 4673 4656 4673 4656 5464 4656 4673 4673 4740 34 50 34707 5477]{N7=64777-,=}%

which prints
";*;*Q*;;~"2f^

which prints
9(9(S(99|

which prints
88c

which prints
X

which prints 1.

CJam, 10 programs, 5,751,122,990 bytes
I was too lazy to golf it... But apparently I don't need to golf it to be competitive. But without golfing it is a bit difficult to post the solution in an answer.
It should work in the JavaScript interpreter in theory, but the program is too long to be tested in a browser. It should output the same in the Java interpreter except for the last program. But it may also run out of memory in the Java interpreter for the first few programs.
Statistics
5683631402 bytes, used )\_l
  65027874 bytes, used %&<>WXehrstu{|} and newline
   2247044 bytes, used +DEFHIS~
    199997 bytes, used ,38=[]`
     15352 bytes, used -25:N and space
      1181 bytes, used 67c
        84 bytes, used #'(@CKMTgkp
        21 bytes, used !"$?BJLQR^fijo
        16 bytes, used */4AGYZabdy
        19 bytes, used .09
         1 byte,  used 1

First bytes
l)__)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))...
\n{s}sX>X<eu{h}sX>X<eu{\n}sX>X<{{XXXXXXX}seeseeseeW>{X<{|}%}%}%{|}sX>X<{{X}se...
SH+~+E+E+E+SH+~+H+E~+SH+~+H+E~+SI+~+H+D+D+SI+~+I+E+E+SH+~+H+E~+SF+~+E+SD+~+D+...
[33]`3=,3333=[33]`3=,388333=[8]`88=,8333=[8]`88=,8333=[8]`88=,8338=[8]`88=,33...
N:--25--22- 2-N:--25--22- 2-N:--22--22-N:--25--22- 2-N:--25--22- 2-N:--22--22...
776776777767c677676676677667c66677666676776c776776777767c7667776c666776666767...
'#('@('T(('k(('T((('k(('K('p(''((('@('T(('k(('T((('k(('k('M('#(('#('C('g('g((...
"?RiQiJo$?RiQijL!"Bf^
4YbZbAd/4YbZbaG*
0.99999999999999999
1

\n is newline in the second program.
Generator
"'#('@('T(('k(('T((('k(('K('p(''((('@('T(('k(('T((('k(('k('M('#(('#('C('g('g((((((((("

{_[i1:X;{_1&6+ \1$X*X5*:X;- 2/}16*;]__,,:)\f<Wf%10fb:c@#)<W%'c}%s

"67c"
"N:--22--22-
N:--25--22- 2-
N:--55--25--5--2--2-"N/ers

"N:-25 "
"[33]`3=,3333=
[33]`3=,388333=
[8]`88=,8333=
[8]`88=,8338=
[8]`88=,333=
[8]`88=,88="N/ers

"[]`38=,"
"SH+~+E+E+E+
SI+~+H+D+D+
SI+~+I+E+E+
SH+~+H+E~+
SI+~+I+D~+H+E~+
SF+~+E+
SD+~+D+D~+"N/ers

"SDEFHI+~"
"{s}sX>X<eu
{t}sX>X<{{XXXXXXXX}s{X}s{XXXXXX}erseeW>{X<{&}%}%}%
{ee}sX>X<eu
{&}sX>X<{{XXXXXXs}s{X}s{XXXXXX}erseeW>{X<{|}%eu}%}%
{h}sX>X<eu
{h}sX>X<eu{X|}%
{N}sX>X<{{XXXXXXX}seeseeseeW>{X<{|}%}%}%
{|}sX>X<{{X}seeW>{X<{|}%}%}%"N/'Nf/Nf*erN\+s

1>"l)_"o)\{'_oi10-')*o'\o}/i10-')*o

APL (Dyalog), 2 chain, 15+2 = 17 bytes
⎕AV[2+⎕AV⍳'⍳.']

Try it online!
Outputs the program
*0

That outputs
1

JavaScript (ES6), 2 functions, 31+4 = 35 bytes
function(){return atob`Xz0+MQ`}

returns _=>1, which returns 1

f0 =
function(){return atob`Xz0+MQ`}

res0 = f0()
console.log('Output of 1st function:', res0)

f1 = eval(res0)
res1 = f1()
console.log('Output of 2nd function:', res1)

Wouldn't function invocation have to be part of each program?

@TehShrike Functions were explicitly allowed in the rules. (A function + its invocation code would be a full program. So, I don't think that would make much sense.)

Oh good call, I missed that

Java 8, 3 programs, 431 bytes
Program 1, 332 bytes
A lambda from one (empty) parameter of any type to String.
x\u002D\u003E"\151\156\164\40\157\75\70\46\70\52\70\54\156\75\53\53\157\53\70\73\156\145\167\40\123\164\162\151\156\147\50\51\53\50\143\150\141\162\51\50\47\171\47\53\157\51\53\50\143\150\141\162\51\50\47\54\47\53\157\51\53\50\143\150\141\162\51\50\47\75\47\53\157\51\53\156\53\50\143\150\141\162\51\50\47\56\47\53\157\51\53\156\73"

This is just a lambda with the arrow characters Unicode-escaped returning the text of the second program encoded with octal escape sequences.
Try It Online
Program 2, 93 bytes
Snippet producing a String.
int o=8&8*8,n=++o+8;new String()+(char)('y'+o)+(char)(','+o)+(char)('='+o)+n+(char)('.'+o)+n;

Try It Online (with return added)
Program 3, 6 bytes
A lambda from one (empty) parameter of any type to int.
z->9/9

Try It Online

Nice answer! You can golf \166 to \44 for -1 byte, since $ is also a valid variable name. Try it online, resulting in $->9-8 (Try it online.)

After several tries, it's just not possible to make a 3-chain with Java. You need the \uXXXX in the first code to avoid ->. Then you need either return (function) or System.out (snippet or function), both contain a u which you already used in \uXXXX. So I personally think this entry is invalid and I downvoted it accordingly.

@OlivierGrégoire Snippets are explicitly allowed in this challenge (first rule). In addition, System.console().printf could be used to prevent the use of u. Something similar is done in this answer and I've also used it in these two answers of mine.

Thanks @KevinCruijssen but a snippet must still output. Here's a fix around all: x->"\146\157\162\50\143\150\141\162\40\44\72\156\145\167\40\143\150\141\162\133\135\173\47\171\47\54\47\54\47\54\47\75\47\54\47\70\47\54\47\56\47\54\47\70\47\175\51\123\171\163\164\145\155\56\143\157\156\163\157\154\145\50\51\56\160\162\151\156\164\146\50\53\53\44\53\156\145\167\40\123\164\162\151\156\147\50\51\51\73" (319 bytes) turns into for(char $:new char[]{'y',',','=','8','.','8'})System.out.printf(++$+new String()); (89 bytes) turns into z->9/9 (6 bytes). Total: 404 bytes.

I meant System.console() for the 2nd program, which is correctly 89 bytes (while the System.out makes it 83 bytes).

Hi folks. @OlivierGrégoire take a look at this example that was posted by OP to show acceptable snippets. The second-last snippet neither returns nor prints its output.

Ok, I yield. Then this makes everything shorter: var r=new String();for(char $:new char[]{'8','.','8'})r+=++$; (61 bytes), and the first program can be as simple as "..." instead of encoding ->.

Also, just for fun, you can reflectively get a reference to System.out without using u, which is what another, no-snippet, 3-chain of mine does.

Jelly,  38 37 36  35 bytes, Chain of 4
ØJiⱮ⁾ɱṾ⁽÷ṃ;ṾØJ⁽¡Ṡị

Try it online! (18 bytes)
8220,163,187Ọ

Try it online!  (13 bytes)
“£»

Try it online! (3 bytes)
!

Try it online! (1 byte)
18+13+3+1=35 bytes
How?
ØJiⱮ⁾ɱṾ⁽÷ṃ;ṾØJ⁽¡Ṡị - Main Link: no arguments
    ⁾ɱṾ            - list of charcters -> ['ɱ','Ṿ']
ØJ                 - yield the characters of Jelly's code-page
   Ɱ               - Ɱap across the two characters applying:
  i                -   first index of? -> [163, 187]
       ⁽÷ṃ         - 8220 (a base 250 compressed number)
          ;        - concatenate -> [8220, 163 187]
           Ṿ       - un-eval (get Jelly code) -> "8220,163,187"
                   - (Note: here a full program prints 8220,163,187 as it is the end
                   - of a leading constant chain due to the following constant)
            ØJ     - yield the characters of Jelly's code-page
              ⁽¡Ṡ  - 1206 (a base 250 compressed number)
                 ị - index into (1-indexed & modular, so gets the 182nd item, 'Ọ')
                   - implicit print (making the final output 8220,163,187Ọ)

8220,163,187Ọ - Main link: no arguments
8220,162,187  - list of numbers -> [8220, 162, 187]
            Ọ - cast ordinals to characters -> ['“','£','»']
              - implicit print (flat Jelly lists print as if strings so outputs “£»)

“£» - Main link: no arguments
“   - open string-literal
 £  - the content of the string-literal
  » - close it interpreting as a compressed string
    - this yields ['!']
    - implicit print (outputs !)

! - Main link: no arguments
! - factorial (of implicit input 0 - 0! = 1 as it is the empty product)
  - implicit print (outputs 1)

Python 2, 3 snippets, 68 + 12 + 3 = 83 bytes
chr(44*2+4).join([chr(42&54),`45+25`,`42*2+52`,`4*4+55`+chr(42&54)])

which produces the string of octal literals:
"\70\136\71"

which produces:
8^9

Which finally produces 1.
Try it online!

SmileBASIC, chain 3, 375 bytes
k=59599-44444print c("sbanm",k,4,"")+c("sbwav",44-5,2,"")+c("sbwav",594-222,4,"")+c("game5vs",4528-442,2,"")+c("sbanm",k,4,"")+c("sbanm",72,5-4,"")*2+c("sbwav",594-222,4,"")+c(sbwav,854-44,2,"")+c("staffroll",259+2,9,"")+c("ex8techdemo",24455,5-2,"")+key(4)[.]def c(f,s,l,q)for i=.to-5+l+4q=q+load("txt:sys/"+f,.)[s+i]next:return q:end

Outputs:
CHR$63OUT A$CHR$33OUT B$PRINT A$;B$;L

Outputs:
?!0

Outputs:
1

PHP 7.0, 2-chain, 35 + 8 = 43 bytes
While writing my initial answer I realized I could just use base64 encode the second echo. It shaved off 11 bytes, so here it is. You can find my original idea below, too.
Run using php -r:
echo base64_decode('RUNITyAxPz4=');

This outputs:
ECHO 1?>

Which then obviously prints:
1

Output:

My code when run in a terminal. The appended && echo is for readability only.
Comments:
There's not much to it really. Very simple once you know about "?>" implicitly acting as ";".  The "tricky" part was to figure out what to encode:

ECHO 1; became RUNITyAxOw==, so we have a collision of uppercase O's. No good.
echo 1; became ZWNobyAxOw==, so now there's two lowercase o's. Unfortunate!
ECHO 1?> became RUNITyAxPz4=. It's the same length and none of the characters collide. So that's it!

Alternatively we can use "echO" and "ECHo", too (36 + 7 = 43 bytes).
echO base64_decOde('RUNIbyAxOw==')?>
ECHo 1;
1

We can also switch the ; and ?> around using that. It works equally well and it all scores the same in length.

My initial solution:
PHP 7.0, 2-chain, 44 + 10 = 54 bytes
This is the best I could come up with at first. I understood that "unique characters" meant "echo" is not equal to "ECHO". Hope I got that right!
Run using php -r:
echo strtoupper(urldecode('echo true%3b'))?>

This outputs:
ECHO TRUE;

Which in turn gives us our number:
1

Output:

My code when run in a terminal. The appended && echo is for readability only.
Some comments:

I think you can only do a 2-chain in PHP since it requires the ";" instruction separator.

You can get around this once by using "?>", which implies a semicolon, but obviously can't re-use it a second time
This was the hardest part for me to figure out. I didn't know this worked beforehand, nor that "?>" was even allowed when running via php -r

By using strtoupper() I was able to just write the code for chain #2 in lowercase, while the output is obviously uppercase. Easy mode right there!
urldecode() allows me to encode ";" as "%3b"
That's all there is really, nothing too exciting

Thanks for the challenge, I learned something today!

Lua, 2 chain, 83+8=91 bytes
load(('').char(0x70,0x72,0x69,0x6E,0x74,39,0x70,0x72,0x69,0x6E,0x74,34,49,34,39))()

Outputs
print"1"

Which outputs
1

Charcoal, 2 programs, 10 + 2 = 12 bytes
⭆´Ｇ´·℅⊕⊕℅ι

Try it online! Outputs
Ｉ¹

Try it online! Which outputs 1.

Braingolf, 2 chain, 9 + 2 = 11 bytes
72-_#23-@

Try it online!
This outputs
5/

Try it online!
(Plus some default output which can be ignored per OP's rules)
This in turn outputs
1

Röda, 2 chain, 31 + 3 = 34 bytes
Snippet 1:
(`X.Z`/"")|ord _|push _+3|chr _

Try it online!
Snippet 2:
[1]

Try it online!
They are snippets, because every valid Röda program must include main{...} bloat. They are also valid Röda REPL programs.

05AB1E, 5 + 3 = 8 bytes
ght<n

Try it online!
which right off the bat returns
I am taking the output 1.0 as not equalling 1, so I run that code:
1.0

Try it online!
which returns
1

And there you go!
Number of programs = 2

Welcome to PPCG.

I just tried to write random things and see what i get. Also, one might use a turing machine program.

You can remove the h (convert to hexadecimal). The g (get length, default 0) with t (square-root) already gives a decimal 0.0. With < (decrease by 1) it becomes -1.0 and then n (square) changes this into 1.0. You could also replace the <n with > (increase by 1). ;) So in total it's 3 bytes (gt>). Alternatively you could use Xt (1 and square-root). PS: I'm not sure if 1.0 to 1 is a valid part of the chain. I've asked OP to verify. Welcome to PPCG and enjoy your stay.

well, computers process the string '1.0' differently than '1'.

dc, 3 programs, 48 bytes
First:
82 2-adAArdAAI2*-rAAI-I2/2^-f

Yields the second:
75
P
90
P
110
P

Yields the third:
KZn

Yields 1.
Try it online! (has some stack-clearing and newline-printing code thrown in to make all three bits run in one go).
Perhaps best to start at program three, KZn. There are only a few ways to print things in dc, and I realized at this stage I would probably be stuck with either p or n, both of which are in the 100s in decimal ASCII. This means that I was almost certainly going to have to generate 1 instead of just using the program 1n. K pushes the current (default: 0) precision to the stack, and Z pushes the number of digits of top-of-stack, which gives us the 1 to print.
The second program is pretty straightforward. P prints the character with the given ASCII value, so we print 75 (K) 90 (Z) and finally 110 (n), which works wonderfully. It also means that, aside from the aforementioned 1, I can't use the digits 5, 7, 9, or 0 elsewhere. I also need a method other than P for turning numbers into characters.
The first program, then, has to make four numbers without using the digits 1, 5, 7, 9, or 0. It needs to make 80 (ASCII value of P): 82 2-; 75: AA (110) I- (subtract the default input radix, 10) I2/ (so, 5) 2^ (so, 5^2, 25) - (75); 90: AA (110) I2* (twice the default input radix of 10, so 20) - (90); and 110: well, it's just AA. After making 80, we use a to convert a number to a string. There are some reverse and duplicate commands in there to put the Ps in the right spots, and then finally we print the whole stack with f.
I'm pretty sure I didn't screw this up, but I did have my head spinning a little bit...

Ruby, 2-chain, 24+3 = 27 bytes
$><<(''<<56+56<<' '<<49)

Output is
p 1


text:
How long is this string?
It's strange this question hasn't been asked yet, so here it is:
Calculate the length of a string given through STDIN
Rules

As said, your string will be given through STDIN, not via command line arguments
Print the length of the string to STDOUT
Only ASCII chars will be given, and all printable ASCII chars count!
This is a code-golf, so the answer with the shortest length wins!

Good Luck and have fun!

every ASCII char counts! Even control characters. Can you provide an example of what you mean ?

@Therandomguy here you are

Does "you^Z^Z^Z" mean that actual 9-byte printable-ASCII string, or does ^Z mean some control character and the string has length 6?

^Z is meant like a backspace char, this rule doesn't seem to be good, because it is impossible on many languages (strange STDIN limitations)

In that case, you should probably restrict to printable ASCII. "Most ASCII chars counts" is ambiguous

@LuisMendo sorry for all that chaos

Obviously most people don't like too easy challenges, but it's valid. (although we already have "add two numbers" and "is that number a prime")

@user202729 I would consider this another reference challenge, like Hello, World!

When the main difficulty is the input format or means, rather than the actual computations, it is usually a sign of a not very interesting challenge

What about languages that cannot use STDIN?

@Adám I guess they can't compete in this challenge. A lot of challenges aren't accessible to some languages due to their restrictions.

@Adám Which language can't use STDIN?

@MegaMan ECMAScript, in-browser JavaScript, TI-Basic, Operation Flashpoint scripting language, …

and all printable ASCII chars count! what do non-printable ones?

This is likely more-or-less trivial in essentially any language that can be used for the challenge (i.e., supports stdin), unless you specifically disallow the use of 'length' or 'shape' intrinsics.

It's not entirely clear how inputs should be taken, ie. given "" on stdin is it an empty string, two characters or is it up to the language (in that case would " be valid input)?

@BMO - I have assumed that the quotes count and also that they can be in the string. If not then I half my byte count from 2 to 1 :-) It should really be clarified.

@BMO In my opinion it's by far the most natural to say the string is the "raw" contents of standard in. Taking source code as input doesn't make much sense for this challenge.

I think I should rather close this question.

Shakespeare Programming Language, 156 bytes
Thanks JoKing for nice trick with [Exeunt].
,.Ajax,.Page,.Act I:.Scene I:.[Exeunt][Enter Ajax and Page]Ajax:Open mind Be you nicer zero?Page:If soyou be the sum ofa cat you.If solet usact I.Open heart
Try it online!

You is the sum... I'm not sure The Bard would approve of your grammar

What is that "nice trick with exeunt"? Shouldn't [Exeunt] be unnecessary since no one is on the stage?

@pppery (Sorry for late reply) on subsequent iterations there are people on the stage, and it's an error when people enter twice. [Exeunt] doesn't throw any error when there's no one. (Check diff between revision 3 and 4)

Golfscript (1 byte)
,

And that's why this question hadn't already been asked.

05AB1E, 1 byte
g

Try it online.
Explanation:
(As if it would be necessary..)
     # Implicit input from STDIN
g    # Length
     # Implicit output to STDOUT

Seems to give the wrong result for """.

@BMO Hmm, you're right. Not sure how to fix that, though (but I will ask around in the 05AB1E chat). One or two double quotes works fine. Any amount of double quotes and another character works fine as well. But three or more double-quotes not anymore.

@BMO Inputting three double quotes would need to be done by surrounding it with three double quotes, so """"""""" would result in 3. This is because three double quotes denote multiline strings.

Java 8, 63 bytes
A lambda taking empty input and throwing IOException.
n->{int c=0;while(System.in.read()>=0)c++;System.out.print(c);}

Try It Online

brainfuck, 163 bytes
,[>+<,]>[>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]<

Try it online!
Somebody had to make this a little interesting.
Explanation:
,[>+<,]>

This is a modified cat program that, rather than outputting each read value, increments the 2nd cell each time a value is read.
The entire rest of the program is for outputting a cell's value as a number rather than an ASCII codepoint.

Hexagony, 11 bytes
,~<@!"/>"){

Try it online!
More readable version:
  , ~ <
 @ ! " /
> " ) { .
 . . . .
  . . .

Pyth, 2 bytes
lz

Explanation
l          #length of
 z         #input

Try it online!

@LuisMendo - Not sure. It depends if surrounding quotes should be counted as part of the text or not. Also without the z it fails if a quoted string contains a quote within the string.

Ah, good point. Deleting suggestion then

Haskell, 25 20 bytes
-5 bytes for making this a function only (initially thought that it has to be a full program)
interact$show.length

Try it online!

Brain-Flak + -a flag, 6 bytes
Even Brain-Flak has a built-in for this challenge...
([]<>)

Try it online!
Without using [] but still rather simple (10 bytes): ({<{}>()})

Whitespace, 73 64 bytes
[S S S N
_Push_0][N
S S N
_Create_Label_LOOP][S N
S _Duplicate][S N
S _Duplicate][T N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S S S T  S T T   S T T   S N
_Push_182][T    S S T   _Subtract][N
T   S S N
_If_0_jump_to_Label_PRINT_AND_EXIT][S S S T N
_Push_1][T  S S S _Add][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT_AND_EXIT][T N
S T _Print_to_STDOUT]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.
Input requires a trailing ¶, because Whitespace has no way to tell when the input-characters are complete. Whitespace only has two STDIN inputs: integer or character. A full string should be inputted one by one, but Whitespace doesn't know when it has all. So perhaps this answer is non-competing due to the restriction of Whitespace, but I've chosen a character outside the printable ASCII range to add as leading character for inputs, so the program knows when to stop and output the length.
Try it online (with raw spaces, tabs and new-lines only).
Explanation in pseudo-code:
Integer counter = 0
Start LOOP:
  Integer input = STDIN as character
  If(input == '¶')
    Jump to function PRINT_AND_EXIT
  counter = counter + 1
  Jump to next iteration of LOOP

function PRINT_AND_EXIT:
  Print counter as integer to STDOUT

Example input: acb¶
Command        Explanation                 Stack        HEAP                    STDIN   STDOUT  STDERR

SSSN           Push 0                      [0]
NSSN           Create Label_LOOP           [0]
 SNS           Duplicate top (0)           [0,0]
 SNS           Duplicate top (0)           [0,0,0]
 TNTS          Read STDIN as character     [0,0]        {0:97}                  'a'
 TTT           Retrieve                    [0,97]       {0:97}
 SSSTSTTSTTSN  Push 182                    [0,97,182]   {0:97}
 TSST          Subtract top two (97-182)   [0,-85]      {0:97}
 NTSSN         If 0: Jump to Label_EXIT    [0]          {0:97}
 SSSTN         Push 1                      [0,1]        {0:97}
 TSSS          Add top two (0+1)           [1]          {0:97}
 NSNN          Jump to Label_LOOP          [1]          {0:97}

 SNS           Duplicate top (1)           [1,1]        {0:97}
 SNS           Duplicate top (1)           [1,1,1]      {0:97}
 TNTS          Read STDIN as character     [1,1]        {0:97,1:99}             'c'
 TTT           Retrieve                    [1,99]       {0:97,1:99}
 SSSTSTTSTTSN  Push 182                    [1,99,182]   {0:97,1:99}
 TSST          Subtract top two (99-182)   [1,-83]      {0:97,1:99}
 NTSSN         If 0: Jump to Label_EXIT    [1]          {0:97,1:99}
 SSSTN         Push 1                      [1,1]        {0:97,1:99}
 TSSS          Add top two (1+1)           [2]          {0:97,1:99}
 NSNN          Jump to Label_LOOP          [2]          {0:97,1:99}

 SNS           Duplicate top (2)           [2,2]        {0:97,1:99}
 SNS           Duplicate top (2)           [2,2,2]      {0:97,1:99}
 TNTS          Read STDIN as character     [2,2]        {0:97,1:99,2:98}        'b'
 TTT           Retrieve                    [2,98]       {0:97,1:99,2:98}
 SSSTSTTSTTSN  Push 182                    [2,98,182]   {0:97,1:99,2:98}
 TSST          Subtract top two (98-182)   [2,-84]      {0:97,1:99,2:98}
 NTSSN         If 0: Jump to Label_EXIT    [2]          {0:97,1:99,2:98}
 SSSTN         Push 1                      [2,1]        {0:97,1:99,2:98}
 TSSS          Add top two (2+1)           [3]          {0:97,1:99,2:98}
 NSNN          Jump to Label_LOOP          [3]          {0:97,1:99,2:98}

 SNS           Duplicate top (3)           [3,3]        {0:97,1:99,2:98}
 SNS           Duplicate top (3)           [3,3,3]      {0:97,1:99,2:98}
 TNTS          Read STDIN as character     [3,3]        {0:97,1:99,2:98,3:182}  '¶'
 TTT           Retrieve                    [3,182]      {0:97,1:99,2:98,3:182}
 SSSTSTTSTTSN  Push 182                    [3,182,182]  {0:97,1:99,2:98,3:182}
 TSST          Subtract top two (182-182)  [3,0]        {0:97,1:99,2:98,3:182}
 NTSSN         If 0: Jump to Label_EXIT    [3]          {0:97,1:99,2:98,3:182}

NSSSN          Create Label_EXIT           [3]          {0:97,1:99,2:98,3:182}
 TNST          Print as integer to STDOUT  []                                          3
                                                                                error

Stops program with error: No exit defined.

APL+WIN, 2 bytes
Prompts for character string input then counts characters:
⍴⍞

Try it online!

@Adám Thanks. Fixed.

Keg, 3 bytes
?!.

Well, I can't golf this program well.
TIO

Octave, 14 bytes
nnz(input(''))

Try it online!

R, 23 bytes
cat(nchar(readLines()))

Try it online!

Retina, 3 bytes
s`.

Try it online!
This isn't even technically a built-in function, but it is a central feature of the language: counting matches of a regular expression, in this case . (wildcard matching any character). The ` makes Retina treat the character(s) preceding it in the line as configuration, so s activates SingleLine mode, which makes . match newlines also, because they are part of printable ASCII.

Batch, 182 bytes
@set s=
@set/ps=
@set "t=%s:"=""%"
@if "%t:"=""%"=="""=""""" goto g
@for %%s in ("%s:"=%" "%t%")do @echo(%%~s>>_
@for %%s in (_)do @set s=%%~zs
@del _
:g
@cmd/cset/as/2-2*!!s

Testing for the empty string without breaking when quotes were present was cumbersome! Explanation:
@set s=

Clear s as set/p leaves s unchanged if the input was empty.
@set/ps=

Take input on STDIN into s.
@set "t=%s:"=""%"

Try to quote all of the quotes in s. However, if s is empty, Batch throws a wobbly, and sets t to "="" instead, which still has an odd number of quotes.
@if "%t:"=""%"=="""=""""" goto g

Quote all of the quotes in t, and compare the result to ""="""". This can only happen if s was empty, in which case we skip the measurement step.
@for %%s in ("%s:"=%" "%t%")do @echo(%%~s>>_

Print s without quotes and s with quoted quotes on separate lines to a temporary file. The ( is needed in case s only contains quotes.
@for %%s in (_)do @set s=%%~zs

Obtain the length of the temporary file.
@del _

Delete the temporary file.
:g

Jump here if the input was empty.
@cmd/cset/as/2-2*!!s

Halve and subtract 2 from the length of the temporary file. However if the input was empty then s will be treated as the numeric value zero, and the result of the expression is then zero as desired.
117 bytes without empty string support:
@set/ps=
@for %%s in ("%s:"=%" "%s:"=""%")do @echo(%%~s>>_
@for %%s in (_)do @set s=%%~zs
@del _
@cmd/cset/as/2-2

93 bytes if support for "s is not necessary (84 bytes without " or empty string support):
@set s=
@set/ps=
@set n=0
:l
@if not "%s%"=="" set/an+=1&set "s=%s:~1%"&goto l
@echo %n%

Empty strings and quotes can even be handled for 212 bytes without resorting to file length builtins:
@set s=
@set/ps=
@set "t=%s:"=""%"
@set n=0
@if "%t:"=""%"=="""=""""" goto g
:l
@set/an+=1
@set "s=%t:~,1%%t:~,1%"
@if "%s%" neq """" set "t=.%t%"
@set "t=%t:~2%"
@if not "%t%"=="" goto l
:g
@echo %n%

Here after quoting the quotes in s we have to be careful to double the first character of t in case it is a quote, then if it is not then prefix a dummy character to t so that the first two characters may be safely removed. This ends up counting the quoted quotes as single characters again.

Ruby, 16 Bytes
This was rather easy.
puts gets.length

needs no explanation ;)

Perl 6,  15  14 bytes
slurp.codes.say

Try it
say +$*IN.comb

Try it

slurp reads everything
codes gets the number of Unicode codepoints
(this is different than chars for \r\n)
say print the .gist with trailing newline
(put could have been used, which just adds the newline)
&prefix:« + » converts to Numeric
$*IN is STDIN
comb splits its input into a sequence of characters
(Which when converted to Numeric returns a count)

Python 3, 19 bytes
print(len(input()))

Try it online!

W s, 1 byte
k

Explanation
% s: we have to read from STDIN.
% Implicitly prepend an input
k % (k)ount the number of items in this thing
% Implicit output

How do I use the parameter?
The cli param system is quite weird (to allow people to type less), so here is an example of how it is used:
$ ..\python W.py code.w [] s
'Hello'
Code: k
#0: a []
#1: k ['a[0]']
out: lambda a:mylen(a[0])
5