Rebol3 Code Examplex


Palindrome dates

Dates whose digits read the same forward and backward in a given date format, such as 02/02/2020 in MM/DD/YYYY.

Rebol [
    title: "Rosetta code: Palindrome dates"
    file:  %Palindrome_dates.r3
    url:   https://rosettacode.org/wiki/Palindrome_dates
]

palindrome-date?: function [
    "Returns true if the date reads the same forwards and backwards in YYYYMMDD format."
    date [date!]
][
    formated: format-datetime date "yyyymmdd"  ;; e.g. 20210112
    did equal? formated reverse copy formated  ;; compare original vs reversed
]

print as-yellow "First 15 palindrome dates after 2020-02-02 are:"
n: 0 date: 2020-2-3  ;; search start date
until [
    if palindrome-date? date [
        ++ n
        printf [-7 ": " <yyyy-mm-dd>] [n date]  ;; print index and date
    ]
    date: date + 1   ;; advance by one day
    n >= 15          ;; stop after finding 15 palindrome dates
]

Output:

First 15 palindrome dates after 2020-02-02 are:
      1: 2021-12-02
      2: 2030-03-02
      3: 2040-04-02
      4: 2050-05-02
      5: 2060-06-02
      6: 2070-07-02
      7: 2080-08-02
      8: 2090-09-02
      9: 2101-10-12
     10: 2110-01-12
     11: 2111-11-12
     12: 2120-02-12
     13: 2121-12-12
     14: 2130-03-12
     15: 2140-04-12