Let's learn some soil pH chemistry!
Jelly, 77 73 71 bytes
“£RĿÐƭðṚ°ƲṂṾẒ=ʂXḣsịɠ<»Ḳµ,Ṛ;€"“¡D⁺“a&»j“¿<z»W¤ṙ3
×20<“FYeoy³ƓɗʋṆ‘Sị¢⁾. y
A monadic link taking the number and returning a list of characters; or a full program printing the result.
Try it online!
How?
“ ... »Ḳµ,Ṛ;€"“¡D⁺“a&»j“¿<z»W¤ṙ3 - Link 1, name list: no arguments
“ ... » - compression of "Ultra Extremely Very.strongly Strongly Moderately Slightly"
Ḳ - split at spaces
µ - monadic chain separation, call that adjectives
Ṛ - reverse adjectives
, - pair these two lists
“¡D⁺“a&» - compression of [" alkaline"," acidic"]
" - zip with:
;€ - concatenate for €ach
¤ - nilad followed by links as a nilad
“¿<z» - compression of "Neutral"
W - wrap in a list
j - join
ṙ3 - rotate left by 3: ["Strongly alkaline","Moderately alkaline","Slightly alkaline","Neutral","Slightly acidic","Moderately acidic","Strongly acidic","Very.strongly acidic","Extremely acidic","Ultra acidic","Ultra alkaline","Extremely alkaline","Very.strongly alkaline"]
×20<“FYeoy³ƓɗʋṆ‘Sị¢⁾. y - Main link: number, pH
×20 - multiply by 20
“FYeqy³ƓɗʋṆ‘ - code-page indexes = [70,89,101,111,121,131,147,157,169,180]
< - less than? (vectorises)
- i.e.: pH < [3.5,4.45,5.05,5.55,6.05,6.55,7.35,7.85,8.45,9]
S - sum
¢ - call last link (1) as a nilad
ị - index into (1-indexed and modular)
- ...note that the sum is never 11 or 12, so "Ultra alkaline" and
- "Extremely alkaline" wont be fetched, but that a sum of 0
- fetches "Very.strongly alkaline", as required.
⁾. - literal list of characters ['.', ' ']
y - translate (replace any '.' with a ' ' i.e. for "Very.strongly")
- if running as a full program, implicit print
PHP, 199 bytes
foreach([35,9.5,6,5,5,5,8,5,6,5.5]as$l)$p+=$argn*10>=$s+=$l;$p-=$argn==9;echo[Ultra,Extremely,"Very strongly",Strongly,Moderately,Slightly][$p>6?12-$p:$p],[" acidic",Neutral," alkaline"][1+($p<=>6)];
Try it online!
C# (.NET Core), 236 bytes
p=>{var l=new[]{70,89,101,111,121,131,147,157,169,180,280};var a="Ultra,Extremely,Very strongly,Strongly,Moderately,Slighty, acidic,Neutral, alkaline".Split(',');int i=0;for(;p*20>=l[i];i++);return i==6?a[7]:i<6?a[i]+a[6]:a[12-i]+a[8];}
Try it online!
This solution considers that p
cannot be greater than 14.