आइए जानें कुछ मिट्टी का पीएच रसायन!


14

एंड्रयू एक रसायनज्ञ हैं, जो समाधान की अम्लता और कृषि में रुचि रखते हैं। महीनों के अनुसंधान के बाद (Google उसका दोस्त नहीं है), वह पीएच (हाइड्रोजन की क्षमता) के संदर्भ में मानव-पठनीय स्तर के बारे में निम्न तालिका के साथ आया था :

         वशीकरण | पीएच रेंज
                             |
    ------------------------- + ------------------------ -----   
    अल्ट्रा अम्लीय | 3.5 से नीचे
    ------------------------- + ------------------------ ------
    अत्यधिक अम्लीय | 3.5 और 4.4 के बीच
    ------------------------- + ------------------------ ------
    बहुत जोरदार अम्लीय | 4.5 और 5.0 के बीच
    ------------------------- + ------------------------ ------
    जोरदार अम्लीय | 5.1 और 5.5 के बीच
    ------------------------- + ------------------------ ------
    मध्यम रूप से अम्लीय | 5.6 और 6.0 के बीच
    ------------------------- + ------------------------ ------
    थोड़ा अम्लीय | 6.1 और 6.5 के बीच
    ------------------------- + ------------------------ ------
    तटस्थ | 6.6 और 7.3 के बीच
    ------------------------- + ------------------------ ------
    थोड़ा सा क्षारीय | 7.4 और 7.8 के बीच
    ------------------------- + ------------------------ ------
    मध्यम रूप से क्षारीय | 7.9 और 8.4 के बीच
    ------------------------- + ------------------------ ------
    जोर से क्षारीय | 8.5 और 9.0 के बीच
    ------------------------- + ------------------------ ------
    बहुत दृढ़ता से क्षारीय | ओवर 9.0

किसी पदार्थ के pH का प्रतिनिधित्व करने वाले एक गैर-नकारात्मक दशमलव संख्या को देखते हुए, उसके मूल्य को आउटपुट करता है। आप इनपुट ले सकते हैं और किसी भी मानक विधि द्वारा आउटपुट प्रदान कर सकते हैं । जिन डेटा प्रकारों के साथ आपको इनपुट लेने की अनुमति है वे हैं:

  • फ्लोट
  • दोहरा
  • आपकी भाषा का मानक दशमलव संख्या डेटा प्रकार
  • तार

और आपको एक स्ट्रिंग का उत्पादन करना चाहिए जो कि संप्रदाय का प्रतिनिधित्व करता है। रसायन विज्ञान से संबंधित बिल्ट-इन निषिद्ध हैं (क्षमा करें, गणितज्ञ!)

लगभग नियम: यदि आप जो पीएच प्राप्त करते हैं वह एक संप्रदाय की ऊपरी सीमा और अगले एक के निचले हिस्से के बीच होता है (उदाहरण 7.8 और 7.9 के बीच), तो यह दोनों के बीच निकटतम मूल्य के बराबर हो जाता है: यदि पीएच B के ऊपरी हिस्से में पहले + 0.5, फिर इसे दूसरा मूल्यह्रास प्राप्त करना चाहिए, लेकिन अगर पीएच <ऊपरी के पहले + 0.5, तो उसे पहला प्राप्त करना चाहिए (जैसे 7.85 को 7.9 पर अनुमानित है, लेकिन 7.84999 7.8 तक अनुमानित है)। स्पष्टीकरण के लिए परीक्षण मामलों को देखें।

परीक्षण के मामलों:

इनपुट -> आउटपुट

6.40 -> थोड़ा अम्लीय
8.399 -> मध्यम रूप से क्षारीय
3.876 -> अत्यधिक अम्लीय
10.60 -> बहुत दृढ़ता से क्षारीय     
0.012 -> अल्ट्रा अम्लीय
7.30 -> तटस्थ
7.85 -> मध्यम रूप से क्षारीय (सन्निकटन नियम लागू होता है)
7.849 -> थोड़ा क्षारीय (सन्निकटन नियम लागू होता है)
6.55 -> तटस्थ (सन्निकटन नियम लागू होता है)

यह , इसलिए सबसे कम वैध जमा (बाइट्स में) जीतता है!

* एंड्रयू उस के साथ नहीं आया था, यह विकिपीडिया था !


जो लोग हटाए गए पोस्ट देख सकते हैं, उनके लिए सैंडबॉक्स
श्री एक्सकोडर

हाँ, यह वास्तव में वास्तविक अम्लता के स्तर के साथ काम नहीं करता है। नींबू के रस से अधिक अम्लीय कुछ भी अम्लीय होता है
विनाशकारी नींबू

@ डस्टरेक्टिबल लेमन अगर नींबू का रस अल्ट्रा अम्लीय है, तो फ़्लोरोएन्टिमोनिक एसिड , जो व्यवहार करता है जैसे कि total31.3 कुल परमाणु बम है :))
श्री एक्सकोडर

ओह, मैं देख रहा हूं कि आप कहां गलत हो गए हैं। 3.5 ph अल्ट्रा अम्लीय नहीं है, लेकिन यह अल्ट्रा अम्लीय है यदि आप जिस मिट्टी में पौधे उगा रहे हैं वह 3.5 ph है। मेरा मतलब है, यह तालिका मिट्टी के लिए संदर्भित करता है
विनाशकारी नींबू

1
ब्राउनी पायथन या स्विफ्ट में एक उत्तर के लिए
इशारा करता है

जवाबों:


6

जेली ,  77 73  71 बाइट्स

“£RĿÐƭðṚ°ƲṂṾẒ=ʂXḣsịɠ<»Ḳµ,Ṛ;€"“¡D⁺“a&»j“¿<z»W¤ṙ3
×20<“FYeoy³ƓɗʋṆ‘Sị¢⁾. y

संख्या लेने और वर्णों की सूची वापस करने का एक विवादास्पद लिंक; या परिणाम को पूरा करने वाला एक पूरा कार्यक्रम।

इसे ऑनलाइन आज़माएं!

कैसे?

“ ... »Ḳµ,Ṛ;€"“¡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

मैं हमेशा 05AB1E और जेली के बीच प्रतियोगिता का आनंद लेता हूं ... केवल 2 बाइट्स दूर
श्री एक्सकोडर

3
जेली 05AB1E धड़कता है?!?!
एरिक आउटगोल्फर


4

सी # (.NET कोर) , 236 बाइट्स

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];}

इसे ऑनलाइन आज़माएं!

यह समाधान मानता है कि p14 से अधिक नहीं हो सकता है।


4

टी-एसक्यूएल, 305 299 बाइट्स

DECLARE @ char(999)=REPLACE(REPLACE(REPLACE(REPLACE('SELECT TOP 1i FROM(VALUES(''Very s$#9&S$#8.4&Moderately#7.8&Slightly#7.3&Neutral'',6.5&Slightly@6&Moderately@5.5&S$@5&Very s$@4.4&Extremely@3.4&Ultra@-1))x(i,j),t WHERE j<a','#',' alkaline'','),'@',' acidic'','),'&','),('''),'$','trongly')EXEC(@)

इनपुट एक पूर्व मौजूदा तालिका के माध्यम से है टी के साथ DECIMAL(4,1)स्तंभ एक , हमारे इनपुट / आउटपुट नियमों के अनुसार

की वजह से DECIMAL(4,1)डेटा प्रकार, किसी भी "सन्निकटन नियम" गोलाई जब मान इनपुट तालिका में दर्ज किया गया है जगह लेता है, तो स्पष्ट रूप से मेरे कोड द्वारा प्रबंधित करने की आवश्यकता नहीं है।

अंतरिक्ष की बचत के REPLACESप्रदर्शन के बाद, यह हमारी मूल्यों की सूची के साथ हमारी इनपुट तालिका में शामिल होने वाली एक सरल SQL क्वेरी है:

SELECT TOP 1 i
FROM(VALUES
    ('Very strongly alkaline',9),
    ('Strongly alkaline',8.4),
    ('Moderately alkaline',7.8),
    ('Slightly alkaline',7.3),
    ('Neutral',6.5),
    ('Slightly acidic',6),
    ('Moderately acidic',5.5),
    ('Strongly acidic',5),
    ('Very strongly acidic',4.4),
    ('Extremely acidic',3.4),
    ('Ultra acidic',-1)
) x(i,j), t
WHERE j<a

मैं आदेश को उलट देता हूं ताकि TOP 1हमारे इनपुट मूल्य की तुलना में पहले वाला कम हो।

यहां तक ​​कि यह फ़ॉर्म (लाइन ब्रेक और अतिरिक्त रिक्त स्थान को हटाने के बाद) 318 बाइट्स में बहुत अच्छा है । के ओवरहेड को जोड़ना DECLARE, REPLACESऔर EXECकेवल सभी दोहराया वाक्यांशों के साथ इसके लायक हो जाता है।

संपादित करें : कई मूल्यों पर अनावश्यक ".0" को हटाकर 6 बाइट्स सहेजें


3

05AB1E , 81 80 79 77 76 74 बाइट्स

'Ĉ“¢³¿™ly³¾‚Òw““³¾§ÓªÅ“«#¦¦’šÉaƒ£’«Š’w¡Îic’«)˜™'wð:I•t{~À•ST+.¥70+20/‹Oè

इसे ऑनलाइन आज़माएं!

परीक्षण सूट

व्याख्या

'Ĉ                   # push the string "neutral"
“¢³¿™ly³¾‚Òw“         # push the string "slightly moderately strongly veryw"
“³¾§ÓªÅ“              # push the string "strongly extremely ultra"
«                     # concatenate the top 2 items on the stack
 #                    # split on spaces
  Â                   # push a reversed copy
   ¦¦                 # remove the first 2 elements of the copy ("ultra", "extremely")
’šÉaƒ£’«              # append the string "walkaline" to each ("walk"+"a"+"line")
        Š             # move down 2 places on the stack
’w¡Îic’«              # append the string "wacidic" to each ("w"+"acid"+"ic")
        )˜            # wrap stack in a list and flatten
          ™           # title case each
           'wð:       # replace each instance of "w" with a space
I                     # push input
 •t{~À•               # push the base 255 compressed number 920006021
       ST+            # split to list of digits and add 10 to each
          .¥          # undelta (compute increments from 0)
            70+       # add 70 to each
               20/    # divide each by 20
                  ‹   # compute input less than for each
                   O  # sum
                    è # use this to index into list of strings

यह आश्चर्यजनक रूप से 05AB1E के लिए लंबा है
श्री एक्सकोडर

पार्टी के लिए देर से, लेकिन फिर भी उत्सुक: क्या कोई इस भाषा में सीधे प्रोग्राम करता है (भले ही केवल कोड गोल्फिंग के लिए) या यह किसी "कंपाइलर" के कुछ प्रकार का आउटपुट है?
av4242

1
@ avl42: हम सीधे इस भाषा में हाँ (आमतौर पर केवल गोल्फ कोर्स के लिए) कोड करते हैं। मैं किसी को उत्पादन कोड में इसका उपयोग करते हुए देखने से नफरत करता हूं;) यह एक व्याख्या की गई भाषा है, इसलिए आप इस भाषा में जो कोड लिखते हैं वह अजगर कोड की व्याख्या करता है।
अमीना

1
@Emigna मैं "व्याख्या" के बजाय "अनुवादित" कहूंगा (यह विपरीत अर्थ की तरह है)
अनातोली

@anatolyg: हाँ, आप सही हैं। मैं हमेशा किसी कारण से व्याख्या करता हूं, शायद अजगर के कारण। इसका व्याख्यात्मक भाषा में अनुवाद किया गया है :)
एमिगा

2

रेटिना , 228 बाइट्स

$
.00
\.(.)\.?(.).*
$1$2
.+
$*
1{900,}
VA
1{845,}
STA
1{785,}
MA
1{735,}
SLA
1{655,}
Neutral
1$
1 acidic
1{605,}
SL
1{555,}
M
1{505,}
ST
1{445,}
V
1{350,}
Extremely
1+
Ultra
M
Moderately
V
Very sT
T
trongly
L
lightly
A
 alkaline

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण सूट शामिल है। स्पष्टीकरण:

$
.00
\.(.)\.?(.).*
$1$2

एक अतिरिक्त दशमलव बिंदु और दो शून्य को दबाकर इनपुट को 100 से गुणा करें और फिर दशमलव बिंदु को हटा दें और इसके बाद के सभी दो अंक।

.+
$*

यूनीरी में बदलें।

1{900,}
VA
1{845,}
STA
1{785,}
MA
1{735,}
SLA

बाद में विस्तार किया जाएगा कि संक्षिप्त में परिवर्तित, सभी क्षार संभाल लें।

1{655,}
Neutral

तटस्थ संभालना।

1$
1 acidic

जो कुछ भी बचा है वह अम्लीय होना चाहिए। (लेकिन पीएच 0.001 होने की स्थिति में 1 को छोड़ दें)

1{605,}
SL
1{555,}
M
1{505,}
ST
1{445,}
V
1{350,}
Extremely
1+
Ultra

सभी एसिड को संभालें।

M
Moderately
V
Very sT
T
trongly
L
lightly
A
 alkaline

संक्षिप्तियों का विस्तार करें।


वाह, मुझे लगता है कि यह थोड़ी देर के लिए इसे नीचे गोल्फ ...
श्री Xcoder

2

पायथन 2 , 202 बाइट्स

-15 बाइट्स @JonathanAllan को धन्यवाद

lambda k:'Neutral_Slightly_Moderately_Strongly_Very strongly_Extremely_Ultra'.split('_')[abs(sum(round(k*10)>ord(i)for i in'",27<AINT')+(k>9)-(3.45<k<3.5)-6)]+(' acidic'*(k<6.55)or' alkaline'*(k>=7.35))

इसे ऑनलाइन आज़माएं!


2
आपने मेरे ब्राउनी पॉइंट ले लिए।
श्री एक्सकोडर

2

जावास्क्रिप्ट (ईएस 6), 192 189 185 184 बाइट्स

k=>([...'09544474540'].some(n=>(i--,k-=++n)<0,i=7,k=k*10-33.5),'Neutral,Slightly,Moderately,Strongly,Very strongly,Extremely,Ultra'.split`,`[i<0?-i:i]+(i?i>0?' acidic':' alkaline':''))

परीक्षण के मामलों


1

एक्सेल, 240 बाइट्स

=CHOOSE((A1<6.55)+(A1<6.05)+(A1<5.55)+(A1<5.05)+(A1<4.45)+(A1<3.5)+(A1>=7.35)+(A1>=7.85)+(A1>=8.45)+(A1>9)+1,"Neutral","Slightly","Moderately","Strongly","Very Strongly","Extremely","Ultra")&IF(A1<6.55," acidic",IF(A1>=7.35," alkaline",""))

0

जावास्क्रिप्ट, 222 209 बाइट्स

x=>'Very strongly,Strongly,Moderately,Slightly,Neutral,Extremely,Ultra'.split(',',7,x-=0.049)[x>9?0:x>8.4?1:x>7.8?2:x>7.3?3:x>6.5?4:x>6?3:x>5.5?2:x>5?1:x>4.4?0:x>3.5?5:6]+(x<6.5?' acidic':x>7.3?' alkaline':'')

अभी भी यह थोड़ा गोल्फ

var f = x=>'Very strongly,Strongly,Moderately,Slightly,Neutral,Extremely,Ultra'.split(',',7,x-=0.049)[x>9?0:x>8.4?1:x>7.8?2:x>7.3?3:x>6.5?4:x>6?3:x>5.5?2:x>5?1:x>4.4?0:x>3.5?5:6]+(x<6.5?' acidic':x>7.3?' alkaline':'')

console.log(f(6.40));
console.log(f(8.399));
console.log(f(3.876));
console.log(f(10.60));
console.log(f(0.012));
console.log(f(7.30));
console.log(f(7.85));
console.log(f(7.849));
console.log(f(6.55));


मुझे नहीं लगता कि आपको फ़ंक्शन को किसी वैरिएबल में असाइन करने की आवश्यकता है।
Zacharý
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.