Rep-string: Difference between revisions

4,945 bytes added ,  3 years ago
→‎{{header|Excel}}: Added a draft for Excel LAMBDA expressions.
m (→‎{{header|Phix}}: added syntax colouring the hard way)
(→‎{{header|Excel}}: Added a draft for Excel LAMBDA expressions.)
Line 1,183:
(no repetition)
</pre>
 
=={{header|Excel}}==
===LAMBDA===
 
Binding the following lambda expressions to the names REPCYCLES and TAKECYCLESTRING in the Excel Workbook Name Manager:
 
(See [https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA: The ultimate Excel worksheet function])
 
{{Works with|Office 365 betas 2021}}
<lang lisp>REPCYCLES
=LAMBDA(s,
LET(
n, LEN(s),
xs, FILTERP(
LAMBDA(pfx,
s = TAKECYCLESTRING(n)(pfx)
)
)(
TAILCOLS(
INITS(
MID(s, 1, QUOTIENT(n, 2))
)
)
),
 
IF(ISERROR(xs), NA(), xs)
)
)
 
 
TAKECYCLESTRING
=LAMBDA(n,
LAMBDA(s,
LET(
lng, LEN(s),
 
MID(
IF(n < lng,
s,
REPT(s, CEILING.MATH(n / lng))
),
1, n
)
)
)
)</lang>
 
And also assuming the following generic bindings in the Name Manager:
 
<lang lisp>FILTERP
=LAMBDA(p,
LAMBDA(xs,
FILTER(xs, p(xs))
)
)
 
 
INITS
=LAMBDA(s,
LET(
lng, LEN(s),
nxt, 1 + lng,
 
MID(s, 1, SEQUENCE(1, nxt, 0, 1))
)
)
 
 
LASTCOL
=LAMBDA(xs,
IF(
AND(1 = COLUMNS(xs), ISBLANK(xs)),
NA(),
INDEX(xs, 1, COLUMNS(xs))
)
)
 
 
TAILCOLS
=LAMBDA(xs,
IF(1 < COLUMNS(xs),
INDEX(
xs,
1,
SEQUENCE(1, COLUMNS(xs) - 1, 2, 1)
),
NA()
)
)</lang>
 
{{Out}}
{| class="wikitable"
|-
|||style="text-align:right; font-family:serif; font-style:italic; font-size:120%;"|fx
! colspan="2" style="text-align:left; vertical-align: bottom; font-family:Arial, Helvetica, sans-serif !important;"|=LASTCOL(REPCYCLES(A2))
|- style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff;"
|
| A
| B
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 1
| style="text-align:right; font-weight:bold" | String
| style="text-align:left; font-weight:bold" | Longest cycle, if any
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 2
| style="text-align:right; font-weight:bold" | 1001110011
| style="text-align:left; background-color:#cbcefb;" | 10011
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 3
| style="text-align:right; font-weight:bold" | 1110111011
| style="text-align:left;" | 1110
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 4
| style="text-align:right; font-weight:bold" | 0010010010
| style="text-align:left;" | 001
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 5
| style="text-align:right; font-weight:bold" | 1010101010
| style="text-align:left;" | 1010
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 6
| style="text-align:right; font-weight:bold" | 1111111111
| style="text-align:left;" | 11111
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 7
| style="text-align:right; font-weight:bold" | 0100101101
| style="text-align:left;" | #N/A
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 8
| style="text-align:right; font-weight:bold" | 0100100
| style="text-align:left;" | 010
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 9
| style="text-align:right; font-weight:bold" | 101
| style="text-align:left;" | #N/A
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 10
| style="text-align:right; font-weight:bold" | 11
| style="text-align:left;" | 1
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 11
| style="text-align:right; font-weight:bold" | 00
| style="text-align:left;" | 0
|- style="text-align:right;"
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 12
| style="text-align:right; font-weight:bold" | 1
| style="text-align:left;" | #N/A
|}
 
=={{header|F_Sharp|F#}}==
9,655

edits