# A DNA string is composed of the letters 'A','C','G' and 'T'. The
# GC-content of a DNA string is given by the percentage of the symbols
# in the string that are either 'C' or 'G'. Very small discrepancies
# in GC-content can be used to distinguish species; for instance, most
# bacteria have a GC-content significantly higher than 50%.
# Write a function that:
# has a right argument that is a non-empty character vector representing a DNA string.
# returns the percentage of GC-content in the string.
Prob1 ⇐ 100×+´∘∊⟜"GC"÷≠
# Write a function that behaves like the APL index-of function R←X⍳Y
# except that it returns 0 instead of 1+≢X for elements of Y not found
# in X.
Prob2 ⇐ ⊐-¬∘∊˜×1+≠∘⊣
# Write a function that finds which elements of Y are multiples of each
# element of X and returns them as a vector (in the order of X) of vectors
# (in the order of Y).
Prob3 ⇐ (<˘0=|⌜)/¨<∘⊢
# Write a function that takes a right argument which is an array
# of positive numbers representing circle diameters and returns a
# numeric array of the same shape as the right argument representing
# the difference between the areas of the circles and the areas of the
# largest squares that can be inscribed within each circle.
Prob4 ⇐ (4÷˜π×ט)-·÷⟜2ט
# Suppose you have a number of trees that you want to plant in a
# rectangular pattern with complete rows and columns, meaning all rows
# have the same number of trees. You also want that rectangular pattern
# to be as "square" as possible, meaning there is a minimal difference
# between the number of rows and columns in the pattern
Prob5 ⇐ { ≍⟜(𝕩⊸÷) ⊑ (0=|⟜𝕩)⊸/ ⌽1+↕⌊√𝕩 }
# Write a function that:
# has a character vector right argument that is a permutation of 'KQRRBBNN'
# returns 1 if the following are true:
# the K is between the two Rs
# the Bs occupy one odd and one even position
# otherwise a 0 is returned.
Prob6 ⇐ (⊑1=/∘=⟜'R'⍋⊐⟜'K')∧·≠´2|/∘=⟜'B'
# Wikipedia states that, in recreational mathematics, a square array of
# numbers, usually positive integers, is called a magic square if the
# sums of the numbers in each row, each column, and both main diagonals
# are the same.
# Write a function to test whether an array is a magic square.
Prob7 ⇐ (⊒≡⊒˜)+˝∾+˝˘∾·(+´0‿0⊸⍉)¨⌽⍟(↕2)
# Write a function that:
# has a right argument that is a numeric scalar or vector of length up
# to 3, representing a number of [[[days] hours] minutes] – a single
# number represents minutes, a 2-element vector represents hours and
# minutes, and a 3-element vector represents days, hours, and minutes.
# has a similar left argument, although not necessarily the same length
# as the right argument.
# returns a single number representing the magnitude of the difference
# in minutes between the arguments.
Prob8 ⇐ |-○(1440‿60‿1⊸(+´∘×)¯3⊸↑)
# Write a function that has a right argument that is a numeric vector of
# 2 or more elements representing daily prices of a stock and returns an
# integer singleton that represents the highest number of consecutive
# days where the price increased, decreased, or remained the same,
# relative to the previous day.
Prob9 ⇐ {⌈´∾<‿=‿>{≠¨(⊢-˜¬×+`)⊸⊔¬𝕎´˘𝕩}¨<2↕𝕩}
# Write a function that has a right argument T that is a character scalar,
# vector or a vector of character vectors/scalars, a left argument W that
# is a positive integer specifying the width of the result. and returns
# a right-aligned character array R< of shape ((2=|≡T)/≢T),W meaning
# R is one of the following:
# a W-wide vector if T is a simple vector or scalar.
# a W-wide matrix with the same number rows as elements of T if T is
# a vector of vectors/scalars.
# If an element of T has length greater than W, truncate it after
# W characters.
Prob10 ⇐ (2≤≡∘⊢)◶⟨-⊸↑⋄>-⊸↑¨⟩