How to resolve the algorithm N'th step by step in the Haskell programming language
How to resolve the algorithm N'th step by step in the Haskell programming language
Table of Contents
Problem Statement
Write a function/method/subroutine/... that when given an integer greater than or equal to zero returns a string of the number followed by an apostrophe then the ordinal suffix.
Returns would include 1'st 2'nd 3'rd 11'th 111'th 1001'st 1012'th
Use your routine to show here the output for at least the following (inclusive) ranges of integer inputs: 0..25, 250..265, 1000..1025
Note: apostrophes are now optional to allow correct apostrophe-less English.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm N'th step by step in the Haskell programming language
The provided Haskell code defines an array ordSuffs
that maps integers to their corresponding ordinal suffixes (e.g., "1st", "2nd", etc.). It also defines a function ordSuff
that takes an integer and returns its ordinal suffix, and a function printOrdSuffs
that takes a list of integers and prints their ordinal suffixes separated by spaces. The main
function calls printOrdSuffs
on three different lists of integers. Here is a detailed explanation of the code:
-
Importing Libraries: The code imports the
Data.Array
module, which provides functions for working with arrays. -
Ordinals Suffixes Array: The
ordSuffs
array is defined using thelistArray
function, which creates an array from a list of values. The array has a range from 0 to 9, and the values are the corresponding ordinal suffixes ("th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"). -
Ordinal Suffix Function: The
ordSuff
function takes an integern
as input and returns its ordinal suffix as a string. It uses theshow
function to convert the integer to a string, and then appends the appropriate suffix based on the value ofn
. Ifn
is between 11 and 13 (inclusive), the suffix "th" is used. Otherwise, the suffix is retrieved from theordSuffs
array using the!
operator, which accesses the value at a specific index. -
Print Ordinal Suffixes: The
printOrdSuffs
function takes a list of integers as input and prints their ordinal suffixes separated by spaces. It uses theunwords
function to concatenate the list of strings into a single string, and then prints the result usingputStrLn
. -
Main Function: The
main
function callsprintOrdSuffs
on three different lists of integers:[0..25]
,[250..265]
, and[1000..1025]
. These lists represent ranges of integers, and the..
operator creates a list of all integers within the specified range (inclusive).
Overall, this code provides a way to generate and print ordinal suffixes for a given list of integers. It demonstrates the use of arrays, pattern matching, and list manipulation in Haskell.
Source code in the haskell programming language
import Data.Array
ordSuffs :: Array Integer String
ordSuffs = listArray (0,9) ["th", "st", "nd", "rd", "th",
"th", "th", "th", "th", "th"]
ordSuff :: Integer -> String
ordSuff n = show n ++ suff n
where suff m | (m `rem` 100) >= 11 && (m `rem` 100) <= 13 = "th"
| otherwise = ordSuffs ! (m `rem` 10)
printOrdSuffs :: [Integer] -> IO ()
printOrdSuffs = putStrLn . unwords . map ordSuff
main :: IO ()
main = do
printOrdSuffs [ 0.. 25]
printOrdSuffs [ 250.. 265]
printOrdSuffs [1000..1025]
You may also check:How to resolve the algorithm Superpermutation minimisation step by step in the Racket programming language
You may also check:How to resolve the algorithm Old lady swallowed a fly step by step in the AWK programming language
You may also check:How to resolve the algorithm Distance and Bearing step by step in the Julia programming language
You may also check:How to resolve the algorithm Mind boggling card trick step by step in the Lua programming language
You may also check:How to resolve the algorithm Sorting algorithms/Bubble sort step by step in the Arturo programming language