Rebol3 Code Examplex


Pick random element

Select a random item from a collection.

Rebol [
    title: "Rosetta code: Pick random element"
    file:  %Pick_random_element.r3
    url:   https://rosettacode.org/wiki/Pick_random_element
]

elements: [
    "Hydrogen_H"       "Helium_He"       "Lithium_Li"      "Beryllium_Be"
    "Boron_B"          "Carbon_C"        "Nitrogen_N"      "Oxygen_O"
    "Fluorine_F"       "Neon_Ne"         "Sodium_Na"       "Magnesium_Mg"
    "Aluminium_Al"     "Silicon_Si"      "Phosphorus_P"    "Sulfur_S"
    "Chlorine_Cl"      "Argon_Ar"        "Potassium_K"     "Calcium_Ca"
    "Scandium_Sc"      "Titanium_Ti"     "Vanadium_V"      "Chromium_Cr"
    "Manganese_Mn"     "Iron_Fe"         "Cobalt_Co"       "Nickel_Ni"
    "Copper_Cu"        "Zinc_Zn"         "Gallium_Ga"      "Germanium_Ge"
    "Arsenic_As"       "Selenium_Se"     "Bromine_Br"      "Krypton_Kr"
    "Rubidium_Rb"      "Strontium_Sr"    "Yttrium_Y"       "Zirconium_Zr"
    "Niobium_Nb"       "Molybdenum_Mo"   "Technetium_Tc"   "Ruthenium_Ru"
    "Rhodium_Rh"       "Palladium_Pd"    "Silver_Ag"       "Cadmium_Cd"
    "Indium_In"        "Tin_Sn"          "Antimony_Sb"     "Tellurium_Te"
    "Iodine_I"         "Xenon_Xe"        "Caesium_Cs"      "Barium_Ba"
    "Lanthanum_La"     "Cerium_Ce"       "Praseodymium_Pr" "Neodymium_Nd"
    "Promethium_Pm"    "Samarium_Sm"     "Europium_Eu"     "Gadolinium_Gd"
    "Terbium_Tb"       "Dysprosium_Dy"   "Holmium_Ho"      "Erbium_Er"
    "Thulium_Tm"       "Ytterbium_Yb"    "Lutetium_Lu"     "Hafnium_Hf"
    "Tantalum_Ta"      "Tungsten_W"      "Rhenium_Re"      "Osmium_Os"
    "Iridium_Ir"       "Platinum_Pt"     "Gold_Au"         "Mercury_Hg"
    "Thallium_Tl"      "Lead_Pb"         "Bismuth_Bi"      "Polonium_Po"
    "Astatine_At"      "Radon_Rn"        "Francium_Fr"     "Radium_Ra"
    "Actinium_Ac"      "Thorium_Th"      "Protactinium_Pa" "Uranium_U"
    "Neptunium_Np"     "Plutonium_Pu"    "Americium_Am"    "Curium_Cm"
    "Berkelium_Bk"     "Californium_Cf"  "Einsteinium_Es"  "Fermium_Fm"
    "Mendelevium_Md"   "Nobelium_No"     "Lawrencium_Lr"   "Rutherfordium_Rf"
    "Dubnium_Db"       "Seaborgium_Sg"   "Bohrium_Bh"      "Hassium_Hs"
    "Meitnerium_Mt"    "Darmstadtium_Ds" "Roentgenium_Rg"  "Copernicium_Cn"
    "Nihonium_Nh"      "Flerovium_Fl"    "Moscovium_Mc"    "Livermorium_Lv"
    "Tennessine_Ts"    "Oganesson_Og"    "Ununbium_Uub"    "Ununtrium_Uut"
    "Ununquadium_Uuq"
]

either all [
   block? args: system/script/args
   not empty? args
][
    label: "Specified"
    try/with [
        entry: pick elements args: to integer! first args
    ][
        print ["Invalid script argument:" as-red args]
        print ["Script expects number from 1 to" length? elements]
        quit
    ]
    unless entry [
        print ["Element" as-red args "hasn't been discovered yet"]
        quit
    ]
][
    label: "Random"
    entry: random/only elements
]



set [name symbol] split entry #"_"
print [label "element:" as-green name "-" as-yellow symbol]