loading...

Daily Challenge #257 - Halving Sum

thepracticaldev profile image dev.to staff ・1 min read

Daily Challenge (270 Part Series)

1) Daily Challenge #1 - String Peeler 2) Daily Challenge #2 - String Diamond 3 ... 268 3) Daily Challenge #3 - Vowel Counter 4) Daily Challenge #4 - Checkbook Balancing 5) Daily Challenge #5 - Ten Minute Walk 6) Daily Challenge #6 - Grandma and her friends 7) Daily Challenge #7 - Factorial Decomposition 8) Daily Challenge #8 - Scrabble Word Calculator 9) Daily Challenge #9 - What's Your Number? 10) Daily Challenge #10 - Calculator 11) Daily Challenge #11 - Cubic Numbers 12) Daily Challenge #12 - Next Larger Number 13) Daily Challenge #13 - Twice Linear 14) Daily Challenge #14 - Square into Squares 15) Daily Challenge #15 - Stop gninnipS My sdroW! 16) Daily Challenge #16 - Number of People on the Bus 17) Daily Challenge #17 - Double Trouble 18) Daily Challenge #18 - Triple Trouble 19) Daily Challenge #19 - Turn numbers into words 20) Daily Challenge Post #20 - Number Check 21) Daily Challenge #21 - Human Readable Time 22) Daily Challenge #22 - Simple Pig Latin 23) Daily Challenge #23 - Morse Code Decoder 24) Daily Challenge #24 - Shortest Step 25) Daily Challenge #25 - Double Cola 26) Daily Challenge #26 - Ranking Position 27) Daily Challenge #27 - Unlucky Days 28) Daily Challenge #28 - Kill the Monster! 29) Daily Challenge #29 - Xs and Os 30) Daily Challenge #30 - What is the price? 31) Daily Challenge #31 - Count IPv4 Addresses 32) Daily Challenge #32 - Hide Phone Numbers 33) Daily Challenge #33 - Did you mean...? 34) Daily Challenge #34 - WeIrD StRiNg CaSe 35) Daily Challenge #35 - Find the Outlier 36) Daily Challenge #36 - Let's go for a run! 37) Daily Challenge #37 - Name Swap 38) Daily Challenge #38 - Middle Name 39) Daily Challenge #39 - Virus 40) Daily Challenge #40 - Counting Sheep 41) Daily Challenge #41 - Greed is Good 42) Daily Challenge #42 - Caesar Cipher 43) Daily Challenge #43 - Boardgame Fight Resolver 44) Daily Challenge #44 - Mexican Wave 45) Daily Challenge #45 - Change Machine 46) Daily Challenge #46 - ??? 47) Daily Challenge #47 - Alphabets 48) Daily Challenge #48 - Facebook Likes 49) Daily Challenge #49 - Dollars and Cents 50) Daily Challenge #50 - Number Neighbor 51) Daily Challenge #51 - Valid Curly Braces 52) Daily Challenge #52 - Building a Pyramid 53) Daily Challenge #53 - Faro Shuffle 54) Daily Challenge #54 - What century is it? 55) Daily Challenge #55 - Building a Pile of Cubes 56) Daily Challenge #56 - Coffee Shop 57) Daily Challenge #57 - BMI Calculator 58) Daily Challenge #58 - Smelting Iron Ingots 59) Daily Challenge #59 - Snail Sort 60) Daily Challenge #60 - Find the Missing Letter 61) Daily Challenge #61 - Evolution Rate 62) Daily Challenge #62 - Josephus Survivor 63) Daily Challenge #63- Two Sum 64) Daily Challenge #64- Drying Potatoes 65) Daily Challenge #65- A Disguised Sequence 66) Daily Challenge #66- Friend List 67) Daily Challenge #67- Phone Directory 68) Daily Challenge #68 - Grade Book 69) Daily Challenge #69 - Going to the Cinema 70) Daily Challenge #70 - Pole Vault Competition Results 71) Daily Challenge #71 - See you next Happy Year 72) Daily Challenge #72 - Matrix Shift 73) Daily Challenge #73 - ATM Heist 74) Daily Challenge #74 - Free Pizza 75) Daily Challenge #75 - Set Alarm 76) Daily Challenge #76 - Bingo! (or not...) 77) Daily Challenge #77 - Bird Mountain 78) Daily Challenge #78 - Number of Proper Fractions with Denominator d 79) Daily Challenge #79 - Connect Four 80) Daily Challenge #80 - Longest Vowel Change 81) Daily Challenge #81 - Even or Odd 82) Daily Challenge #82 - English Beggars 83) Daily Challenge #83 - Deodorant Evaporator 84) Daily Challenge #84 - Third Angle of a Triangle 85) Daily Challenge #85 - Unwanted Dollars 86) Daily Challenge #86 - Wouldn't, not Would. 87) Daily Challenge #87 - Pony Express 88) Daily Challenge #88 - Recursive Ninjas 89) Daily Challenge #89 - Extract domain name from URL 90) Daily Challenge #90 - One Step at a Time 91) Daily Challenge #91 - Bananas 92) Daily Challenge #92 - Boggle Board 93) Daily Challenge #93 - Range Extraction 94) Daily Challenge #94 - Last Digit 95) Daily Challenge #95 - CamelCase Method 96) Daily Challenge #96 - Easter Egg Crush Test 97) Daily Challenge #97 - Greed is Good 98) Daily Challenge #98 - Make a Spiral 99) Daily Challenge #99 - Balance the Scales 100) Daily Challenge #100 - Round Up 101) Daily Challenge #101 - Parentheses Generator 102) Daily Challenge #102 - Pentabonacci 103) Daily Challenge #103 - Simple Symbols 104) Daily Challenge #104 - Matrixify 105) Daily Challenge #105 - High-Sum Matrix Drop 106) Daily Challenge #106 - Average Fuel Consumption 107) Daily Challenge #107 - Escape the Mines 108) Daily Challenge #108 - Find the Counterfeit Coin 109) Daily Challenge #109 - Decorate with Wallpaper 110) Daily Challenge #110 - Love VS. Friendship 111) Daily Challenge #111 - 99 Bottles of Beer 112) Daily Challenge #112 - Functions of Integers on the Cartesian Plane 113) Daily Challenge #113 - Iterative Rotation Cipher 114) Daily Challenge #114 - Speed Control 115) Daily Challenge #115 - Look and Say Sequence 116) Daily Challenge #116 - Shortest Knight Path 117) Daily Challenge #117 - MinMinMax 118) Daily Challenge #118 - Reversing a Process 119) Daily Challenge #119 - Adding Big Numbers 120) Daily Challenge #120 - Growth of a Population 121) Daily Challenge #121 - Who has the most money? 122) Daily Challenge #122 - Clockwise Spirals 123) Daily Challenge #123 - Curry me Softly 124) Daily Challenge #124 - Middle Me 125) Daily Challenge #125 - 23 Matches or More 126) Daily Challenge #126 - The Supermarket Line 127) Daily Challenge #127 - Playing with Passphrases 128) Daily Challenge #128 - Blackjack Scorer 129) Daily Challenge #129 - Clay Pigeon Shooting 130) Daily Challenge #130 - GCD Sum 131) Daily Challenge #131 - Remove Anchor from URL 132) Daily Challenge #132 - Is my friend cheating? 133) Daily Challenge #133 - Suitcase Packing 134) Daily Challenge #134 - Rice and Chessboard Problem 135) Daily Challenge #135 - The Wide Mouthed Frog! 136) Daily Challenge #136 - The Deaf Rats of Hamelin 137) Daily Challenge #137 - Help the Bookseller 138) Daily Challenge #138 - Do I get a Bonus? 139) Daily Challenge #138 - Keep Up the Hoop 140) Daily Challenge #140 - I love you, a little, a lot, passionately ... not at all 141) Daily Challenge #141 - Two Sum 142) Daily Challenge #142 - Parts of a Whole 143) Daily Challenge #143 - Big Arithmetic 144) Daily Challenge #144 - Box Office Clerk 145) Daily Challenge #145 - SET Card Game 146) Daily Challenge #146 - The Dollar Game 147) Daily Challenge #147 - NIM 148) Daily Challenge #148 - Disemvowel Trolls 149) Daily Challenge #149 - Fun with Lamps 150) Daily Challenge #150 - Boggle Guess Validator 151) Daily Challenge #151 - Reverse Parentheses 152) Daily Challenge #152 - Strongest Number in an Interval 153) Daily Challenge #153 - Horse Race Gamble 154) Daily Challenge #154 - Stable Arrangement 155) Daily Challenge #155 - Royal Arranged Marriages 156) Daily Challenge #162 - Taxi Dispatching 157) Daily Challenge #163 - Significant Figures 158) Daily Challenge #164 - Jump 159) Daily Challenge #165 - Password Lost in a Grid 160) Daily Challenge #166 - Cat and Mouse 161) Daily Challenge #167 - Return String As Sorted Blocks 162) Daily Challenge #168 - [Code golf] f (f (f b)) = f b 163) Daily Challenge #169 - Christmas Tree 164) Daily Challenge #170 - Pokemon Damage Calculator 165) Daily Challenge #171 - Ordering Beers in Poland 166) Daily Challenge #172 - Find All in an Array 167) Daily Challenge #173 - Pandemia 168) Daily Challenge #174 - Soccer League Table 169) Daily Challenge #175 - Complementary DNA 170) Daily Challenge #176 - Loopover 171) Daily Challenge #177 - Supersize Me 172) Daily Challenge #178 - Create Phone Numbers 173) Daily Challenge #179 - Hide Phone Numbers 174) Daily Challenge #180 - SMS Shortener 175) Daily Challenge #181 - Is King in Check? 176) Daily Challenge #182 - Arrh, grabscrab! 177) Daily Challenge #183 - Automorphic Numbers 178) Daily Challenge #184 - Form the Minimum 179) Daily Challenge #185 - House Numbers Sum 180) Daily Challenge #186 - Jumping Frog 181) Daily Challenge #187 - Most Sales 182) Daily Challenge #188 - Break camelCase 183) Daily Challenge #189 - Convert Number into Reversed Array 184) Daily Challenge #190 - capitalizeFirstLast 185) Daily Challenge #191 - Alphabetical Addition 186) Daily Challenge #192 - Can you Survive the Zombies? 187) Daily Challenge #193 - What's the Real Floor? 188) Daily Challenge #194 - Spread Number 189) Daily Challenge #195 - No Zeroes for Heroes 190) Daily Challenge #196 - Flou 191) Daily Challenge #197 - Population Growth 192) Daily Challenge #198 - 21 Blackjack 193) Daily Challenge #199 - List of All Rationals 194) Daily Challenge #200 - Longest Linear Palindromic Substring 195) Daily Challenge #201 - Complete the Pattern 196) Daily Challenge #202 - Complete the Pattern II 197) Daily Challenge #203 - Pascal's Triangle 198) Daily Challenge #204 - Partial Keys 199) Daily Challenge #205 - Consonant String Value 200) Daily Challenge #206 - Pound Means Backspace 201) Daily Challenge #207 - Snakes and Ladders 202) Daily Challenge #208 - Delete Occurrences of an Element 203) Daily Challenge #209 - Roman Numerals 204) Daily Challenge #210 - Separate Capitalization 205) Daily Challenge #211 - Product Partitions 206) Daily Challenge #212 - DNA to RNA 207) Daily Challenge #213 - Are they the "same"? 208) Daily Challenge #214 - Persistent Bugger 209) Daily Challenge #215 - Difference of 2 210) Daily Challenge #216 - Rainfall 211) Daily Challenge #217 - SMS w/ an Old Phone 212) Daily Challenge #218 - Possible Sides of a Non-Right Triangle 213) Daily Challenge #219 - Compare Strings 214) Daily Challenge #220 - What Dominates Your Array? 215) Daily Challenge #221 - The Merchant of York 216) Daily Challenge #222 - Parse Bank Account Numbers 217) Daily Challenge #223 - Responsible Drinking 218) Daily Challenge #224 - Password Validator 219) Daily Challenge #225 - Square'n'Sum 220) Daily Challenge #226 - Array to HTML Table 221) Daily Challenge #227 - Android Lock Screen 222) Daily Challenge #228 - Best Profit in Single Sale 223) Daily Challenge #229 - Haiku Validator 224) Daily Challenge #230 - Beeramid 225) Daily Challenge #231 - Perfect Powers 226) Daily Challenge #232 - Regex Pattern 227) Daily Challenge #233 - Get Planet Name by ID 228) Daily Challenge #234 - Happy Birthday! 229) Daily Challenge #235 - Reversing a Process 230) Daily Challenge #236 - RGB to Hex Conversion 231) Daily Challenge #237 - Delete Extra Occurrences 232) Daily Challenge #238 - One is the Loneliest Number 233) Daily Challenge #239 - Graceful Tipping 234) Daily Challenge #240 - ATM 235) Daily Challenge #241 - Tip Calculator 236) Daily Challenge #242 - Expressions Matter 237) Daily Challenge #243 - Redacted! 238) Daily Challenge #244 - Search for Letters 239) Daily Challenge #245 - Sort Santa's Reindeer 240) Daily Challenge #246 - Readable Specification Pattern 241) Daily Challenge #247 - Get Planet Name By ID 242) Daily Challenge #248 - Chinese Numerals 243) Daily Challenge #249 - Incremental Changes 244) Daily Challenge #250 - Last Digit of a Large Number 245) Daily Challenge #251 - Largest Number in a Sequence 246) Daily Challenge #252 - Everybody hates Mondays 247) Daily Challenge #253 - Sort Sentences Pseudo-alphabetically 248) Daily Challenge #254 - The Vowel Code 249) Daily Challenge #255 - Is There an Odd Bit? 250) Daily Challenge #256 - How Many Are Smaller Than I? 251) Daily Challenge #257 - Halving Sum 252) Daily Challenge #258 - Ranking Poker Hands 253) Daily Challenge #259 - Duplicate Encoder 254) Daily Challenge #260 - Subtract the Sum 255) Daily Challenge #261 - Diagonal Strings 256) Daily Challenge #262 - No One Likes Spare Change 257) Daily Challenge #263 - Reverse Words 258) Daily Challenge #264 - Digital Root 259) Daily Challenge #265 - Equal Sides 260) Daily Challenge #266 - Who Likes It? 261) Daily Challenge #267 - Braking Speed 262) Daily Challenge #268 - Swapping Characters in Strings 263) Daily Challenge #269 - Decompose n! 264) Daily Challenge #270 - Fix String Case 265) Daily Challenge #271 - Simulate Population Growth 266) Daily Challenge #272 - Printer Errors 267) Daily Challenge #273 - Remove Duplicates 268) Daily Challenge #274 - Aerial Firefighting 269) Daily Challenge #275 - Casino Chips 270) Daily Challenge #276 - Unwanted Dollar Signs

Given a positive integer n, calculate the following sum:
n + n/2 + n/4 + n/8 + ...

All elements of the sum are the results of integer division. Continue dividing the number until you reach a decimal (no decimals allowed in final answer).

Example
25 => 25 + 12 + 6 + 3 + 1 = 47

Tests
halvingSum(25)
halvingSum(127)


This challenge comes from Belia on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

Daily Challenge (270 Part Series)

1) Daily Challenge #1 - String Peeler 2) Daily Challenge #2 - String Diamond 3 ... 268 3) Daily Challenge #3 - Vowel Counter 4) Daily Challenge #4 - Checkbook Balancing 5) Daily Challenge #5 - Ten Minute Walk 6) Daily Challenge #6 - Grandma and her friends 7) Daily Challenge #7 - Factorial Decomposition 8) Daily Challenge #8 - Scrabble Word Calculator 9) Daily Challenge #9 - What's Your Number? 10) Daily Challenge #10 - Calculator 11) Daily Challenge #11 - Cubic Numbers 12) Daily Challenge #12 - Next Larger Number 13) Daily Challenge #13 - Twice Linear 14) Daily Challenge #14 - Square into Squares 15) Daily Challenge #15 - Stop gninnipS My sdroW! 16) Daily Challenge #16 - Number of People on the Bus 17) Daily Challenge #17 - Double Trouble 18) Daily Challenge #18 - Triple Trouble 19) Daily Challenge #19 - Turn numbers into words 20) Daily Challenge Post #20 - Number Check 21) Daily Challenge #21 - Human Readable Time 22) Daily Challenge #22 - Simple Pig Latin 23) Daily Challenge #23 - Morse Code Decoder 24) Daily Challenge #24 - Shortest Step 25) Daily Challenge #25 - Double Cola 26) Daily Challenge #26 - Ranking Position 27) Daily Challenge #27 - Unlucky Days 28) Daily Challenge #28 - Kill the Monster! 29) Daily Challenge #29 - Xs and Os 30) Daily Challenge #30 - What is the price? 31) Daily Challenge #31 - Count IPv4 Addresses 32) Daily Challenge #32 - Hide Phone Numbers 33) Daily Challenge #33 - Did you mean...? 34) Daily Challenge #34 - WeIrD StRiNg CaSe 35) Daily Challenge #35 - Find the Outlier 36) Daily Challenge #36 - Let's go for a run! 37) Daily Challenge #37 - Name Swap 38) Daily Challenge #38 - Middle Name 39) Daily Challenge #39 - Virus 40) Daily Challenge #40 - Counting Sheep 41) Daily Challenge #41 - Greed is Good 42) Daily Challenge #42 - Caesar Cipher 43) Daily Challenge #43 - Boardgame Fight Resolver 44) Daily Challenge #44 - Mexican Wave 45) Daily Challenge #45 - Change Machine 46) Daily Challenge #46 - ??? 47) Daily Challenge #47 - Alphabets 48) Daily Challenge #48 - Facebook Likes 49) Daily Challenge #49 - Dollars and Cents 50) Daily Challenge #50 - Number Neighbor 51) Daily Challenge #51 - Valid Curly Braces 52) Daily Challenge #52 - Building a Pyramid 53) Daily Challenge #53 - Faro Shuffle 54) Daily Challenge #54 - What century is it? 55) Daily Challenge #55 - Building a Pile of Cubes 56) Daily Challenge #56 - Coffee Shop 57) Daily Challenge #57 - BMI Calculator 58) Daily Challenge #58 - Smelting Iron Ingots 59) Daily Challenge #59 - Snail Sort 60) Daily Challenge #60 - Find the Missing Letter 61) Daily Challenge #61 - Evolution Rate 62) Daily Challenge #62 - Josephus Survivor 63) Daily Challenge #63- Two Sum 64) Daily Challenge #64- Drying Potatoes 65) Daily Challenge #65- A Disguised Sequence 66) Daily Challenge #66- Friend List 67) Daily Challenge #67- Phone Directory 68) Daily Challenge #68 - Grade Book 69) Daily Challenge #69 - Going to the Cinema 70) Daily Challenge #70 - Pole Vault Competition Results 71) Daily Challenge #71 - See you next Happy Year 72) Daily Challenge #72 - Matrix Shift 73) Daily Challenge #73 - ATM Heist 74) Daily Challenge #74 - Free Pizza 75) Daily Challenge #75 - Set Alarm 76) Daily Challenge #76 - Bingo! (or not...) 77) Daily Challenge #77 - Bird Mountain 78) Daily Challenge #78 - Number of Proper Fractions with Denominator d 79) Daily Challenge #79 - Connect Four 80) Daily Challenge #80 - Longest Vowel Change 81) Daily Challenge #81 - Even or Odd 82) Daily Challenge #82 - English Beggars 83) Daily Challenge #83 - Deodorant Evaporator 84) Daily Challenge #84 - Third Angle of a Triangle 85) Daily Challenge #85 - Unwanted Dollars 86) Daily Challenge #86 - Wouldn't, not Would. 87) Daily Challenge #87 - Pony Express 88) Daily Challenge #88 - Recursive Ninjas 89) Daily Challenge #89 - Extract domain name from URL 90) Daily Challenge #90 - One Step at a Time 91) Daily Challenge #91 - Bananas 92) Daily Challenge #92 - Boggle Board 93) Daily Challenge #93 - Range Extraction 94) Daily Challenge #94 - Last Digit 95) Daily Challenge #95 - CamelCase Method 96) Daily Challenge #96 - Easter Egg Crush Test 97) Daily Challenge #97 - Greed is Good 98) Daily Challenge #98 - Make a Spiral 99) Daily Challenge #99 - Balance the Scales 100) Daily Challenge #100 - Round Up 101) Daily Challenge #101 - Parentheses Generator 102) Daily Challenge #102 - Pentabonacci 103) Daily Challenge #103 - Simple Symbols 104) Daily Challenge #104 - Matrixify 105) Daily Challenge #105 - High-Sum Matrix Drop 106) Daily Challenge #106 - Average Fuel Consumption 107) Daily Challenge #107 - Escape the Mines 108) Daily Challenge #108 - Find the Counterfeit Coin 109) Daily Challenge #109 - Decorate with Wallpaper 110) Daily Challenge #110 - Love VS. Friendship 111) Daily Challenge #111 - 99 Bottles of Beer 112) Daily Challenge #112 - Functions of Integers on the Cartesian Plane 113) Daily Challenge #113 - Iterative Rotation Cipher 114) Daily Challenge #114 - Speed Control 115) Daily Challenge #115 - Look and Say Sequence 116) Daily Challenge #116 - Shortest Knight Path 117) Daily Challenge #117 - MinMinMax 118) Daily Challenge #118 - Reversing a Process 119) Daily Challenge #119 - Adding Big Numbers 120) Daily Challenge #120 - Growth of a Population 121) Daily Challenge #121 - Who has the most money? 122) Daily Challenge #122 - Clockwise Spirals 123) Daily Challenge #123 - Curry me Softly 124) Daily Challenge #124 - Middle Me 125) Daily Challenge #125 - 23 Matches or More 126) Daily Challenge #126 - The Supermarket Line 127) Daily Challenge #127 - Playing with Passphrases 128) Daily Challenge #128 - Blackjack Scorer 129) Daily Challenge #129 - Clay Pigeon Shooting 130) Daily Challenge #130 - GCD Sum 131) Daily Challenge #131 - Remove Anchor from URL 132) Daily Challenge #132 - Is my friend cheating? 133) Daily Challenge #133 - Suitcase Packing 134) Daily Challenge #134 - Rice and Chessboard Problem 135) Daily Challenge #135 - The Wide Mouthed Frog! 136) Daily Challenge #136 - The Deaf Rats of Hamelin 137) Daily Challenge #137 - Help the Bookseller 138) Daily Challenge #138 - Do I get a Bonus? 139) Daily Challenge #138 - Keep Up the Hoop 140) Daily Challenge #140 - I love you, a little, a lot, passionately ... not at all 141) Daily Challenge #141 - Two Sum 142) Daily Challenge #142 - Parts of a Whole 143) Daily Challenge #143 - Big Arithmetic 144) Daily Challenge #144 - Box Office Clerk 145) Daily Challenge #145 - SET Card Game 146) Daily Challenge #146 - The Dollar Game 147) Daily Challenge #147 - NIM 148) Daily Challenge #148 - Disemvowel Trolls 149) Daily Challenge #149 - Fun with Lamps 150) Daily Challenge #150 - Boggle Guess Validator 151) Daily Challenge #151 - Reverse Parentheses 152) Daily Challenge #152 - Strongest Number in an Interval 153) Daily Challenge #153 - Horse Race Gamble 154) Daily Challenge #154 - Stable Arrangement 155) Daily Challenge #155 - Royal Arranged Marriages 156) Daily Challenge #162 - Taxi Dispatching 157) Daily Challenge #163 - Significant Figures 158) Daily Challenge #164 - Jump 159) Daily Challenge #165 - Password Lost in a Grid 160) Daily Challenge #166 - Cat and Mouse 161) Daily Challenge #167 - Return String As Sorted Blocks 162) Daily Challenge #168 - [Code golf] f (f (f b)) = f b 163) Daily Challenge #169 - Christmas Tree 164) Daily Challenge #170 - Pokemon Damage Calculator 165) Daily Challenge #171 - Ordering Beers in Poland 166) Daily Challenge #172 - Find All in an Array 167) Daily Challenge #173 - Pandemia 168) Daily Challenge #174 - Soccer League Table 169) Daily Challenge #175 - Complementary DNA 170) Daily Challenge #176 - Loopover 171) Daily Challenge #177 - Supersize Me 172) Daily Challenge #178 - Create Phone Numbers 173) Daily Challenge #179 - Hide Phone Numbers 174) Daily Challenge #180 - SMS Shortener 175) Daily Challenge #181 - Is King in Check? 176) Daily Challenge #182 - Arrh, grabscrab! 177) Daily Challenge #183 - Automorphic Numbers 178) Daily Challenge #184 - Form the Minimum 179) Daily Challenge #185 - House Numbers Sum 180) Daily Challenge #186 - Jumping Frog 181) Daily Challenge #187 - Most Sales 182) Daily Challenge #188 - Break camelCase 183) Daily Challenge #189 - Convert Number into Reversed Array 184) Daily Challenge #190 - capitalizeFirstLast 185) Daily Challenge #191 - Alphabetical Addition 186) Daily Challenge #192 - Can you Survive the Zombies? 187) Daily Challenge #193 - What's the Real Floor? 188) Daily Challenge #194 - Spread Number 189) Daily Challenge #195 - No Zeroes for Heroes 190) Daily Challenge #196 - Flou 191) Daily Challenge #197 - Population Growth 192) Daily Challenge #198 - 21 Blackjack 193) Daily Challenge #199 - List of All Rationals 194) Daily Challenge #200 - Longest Linear Palindromic Substring 195) Daily Challenge #201 - Complete the Pattern 196) Daily Challenge #202 - Complete the Pattern II 197) Daily Challenge #203 - Pascal's Triangle 198) Daily Challenge #204 - Partial Keys 199) Daily Challenge #205 - Consonant String Value 200) Daily Challenge #206 - Pound Means Backspace 201) Daily Challenge #207 - Snakes and Ladders 202) Daily Challenge #208 - Delete Occurrences of an Element 203) Daily Challenge #209 - Roman Numerals 204) Daily Challenge #210 - Separate Capitalization 205) Daily Challenge #211 - Product Partitions 206) Daily Challenge #212 - DNA to RNA 207) Daily Challenge #213 - Are they the "same"? 208) Daily Challenge #214 - Persistent Bugger 209) Daily Challenge #215 - Difference of 2 210) Daily Challenge #216 - Rainfall 211) Daily Challenge #217 - SMS w/ an Old Phone 212) Daily Challenge #218 - Possible Sides of a Non-Right Triangle 213) Daily Challenge #219 - Compare Strings 214) Daily Challenge #220 - What Dominates Your Array? 215) Daily Challenge #221 - The Merchant of York 216) Daily Challenge #222 - Parse Bank Account Numbers 217) Daily Challenge #223 - Responsible Drinking 218) Daily Challenge #224 - Password Validator 219) Daily Challenge #225 - Square'n'Sum 220) Daily Challenge #226 - Array to HTML Table 221) Daily Challenge #227 - Android Lock Screen 222) Daily Challenge #228 - Best Profit in Single Sale 223) Daily Challenge #229 - Haiku Validator 224) Daily Challenge #230 - Beeramid 225) Daily Challenge #231 - Perfect Powers 226) Daily Challenge #232 - Regex Pattern 227) Daily Challenge #233 - Get Planet Name by ID 228) Daily Challenge #234 - Happy Birthday! 229) Daily Challenge #235 - Reversing a Process 230) Daily Challenge #236 - RGB to Hex Conversion 231) Daily Challenge #237 - Delete Extra Occurrences 232) Daily Challenge #238 - One is the Loneliest Number 233) Daily Challenge #239 - Graceful Tipping 234) Daily Challenge #240 - ATM 235) Daily Challenge #241 - Tip Calculator 236) Daily Challenge #242 - Expressions Matter 237) Daily Challenge #243 - Redacted! 238) Daily Challenge #244 - Search for Letters 239) Daily Challenge #245 - Sort Santa's Reindeer 240) Daily Challenge #246 - Readable Specification Pattern 241) Daily Challenge #247 - Get Planet Name By ID 242) Daily Challenge #248 - Chinese Numerals 243) Daily Challenge #249 - Incremental Changes 244) Daily Challenge #250 - Last Digit of a Large Number 245) Daily Challenge #251 - Largest Number in a Sequence 246) Daily Challenge #252 - Everybody hates Mondays 247) Daily Challenge #253 - Sort Sentences Pseudo-alphabetically 248) Daily Challenge #254 - The Vowel Code 249) Daily Challenge #255 - Is There an Odd Bit? 250) Daily Challenge #256 - How Many Are Smaller Than I? 251) Daily Challenge #257 - Halving Sum 252) Daily Challenge #258 - Ranking Poker Hands 253) Daily Challenge #259 - Duplicate Encoder 254) Daily Challenge #260 - Subtract the Sum 255) Daily Challenge #261 - Diagonal Strings 256) Daily Challenge #262 - No One Likes Spare Change 257) Daily Challenge #263 - Reverse Words 258) Daily Challenge #264 - Digital Root 259) Daily Challenge #265 - Equal Sides 260) Daily Challenge #266 - Who Likes It? 261) Daily Challenge #267 - Braking Speed 262) Daily Challenge #268 - Swapping Characters in Strings 263) Daily Challenge #269 - Decompose n! 264) Daily Challenge #270 - Fix String Case 265) Daily Challenge #271 - Simulate Population Growth 266) Daily Challenge #272 - Printer Errors 267) Daily Challenge #273 - Remove Duplicates 268) Daily Challenge #274 - Aerial Firefighting 269) Daily Challenge #275 - Casino Chips 270) Daily Challenge #276 - Unwanted Dollar Signs

Posted on by:

thepracticaldev profile

dev.to staff

@thepracticaldev

The hardworking team behind dev.to ❤️

Discussion

markdown guide
 

COBOL

Run it at jdoodle.com/a/280D

IDENTIFICATION DIVISION.
PROGRAM-ID. HALVING-SUM.
DATA DIVISION.
    WORKING-STORAGE SECTION.
        01 WS-NUMBER PIC 9(4).
        01 WS-SUM PIC 9(5) VALUE 0.
PROCEDURE DIVISION.
    DISPLAY 'Enter number from 1 to 9999:'
    ACCEPT WS-NUMBER FROM CONSOLE       
    PERFORM UNTIL WS-NUMBER < 1
        ADD WS-NUMBER TO WS-SUM
        DIVIDE WS-NUMBER BY 2 GIVING WS-NUMBER
    END-PERFORM     
    DISPLAY WS-SUM.     
STOP RUN.
 
const half = n => n > 0 ? n + half(n>>1) : n
 
const half = n => n && half(n>>1) + n

:v

 

Does "until you reach a decimal" mean "until the result of integer division is below 1"?
Because 25/2 is immediately 12.5, but the example doesn't stop there.
(I do see "integer division", but then there are no decimals)

 

Befunge-93

&>:02pv
      >2/:0`!#v_:02g+02p
              >02g.@

Edit:
Here is a version with comments

&>:02pv Read a value t from the user, store it at (0,2)
         divide t by 2, if t > 0 store (0,2)+t at (0,2) repeat
      >2/:0`!#v_:02g+02p
                if t <= 0 print (0,2) as integer, end program
              >02g.@
 

I like the word problem in the question, where decimals are mentioned, but not the example.
So the examples would be:

  • 25 => 25 + 12.5 = 25
  • 28 => 28 + 14 + 7 + 3.5 = 49
const half = n => n % 2 ? n : n + half(n / 2) // ew, not even tail recursion

1) However, we know that the infinite series n + n/2 + n/4 + n/8 + ... converges to 2n.
(because it is 2n * (1/2 + 1/4 + 1/8 + 1/16 + ⋯) link)
2) And we know that the highest power of 2 we can cleanly divide a number is the number of trailing zeros it has:

0b1100 / 2 = 0b110
0b110 / 2 = 0b11
0b11 / 2 = 'loss.jpg'

3) And we also know that the sum of the infinitely many items we don't get to add looks like, for example n/8 + n/16 + n/32 + ..., which is equivalent to 2n/8* (1/2 + 1/4 + 1/8 + 1/16 + ⋯) (and converges to (2n/8)).
4) So the sum without that tail is 2n - 2n/8, where 8 is 2 to the power of number of trailing zeros of n.
5) Well, turns out there is an intrinsic for trailing zeros.

Rust

fn half(x: u64) -> u64 {
    let highest = x.trailing_zeros();
    2 * x - (x >> highest)
}

which results in just this assembly

example::half:
        test    rdi, rdi
        je      .LBB0_1
        bsf     rcx, rdi
        jmp     .LBB0_3
.LBB0_1:
        mov     ecx, 64
.LBB0_3:
        mov     rdx, rdi
        shr     rdx, cl
        lea     rax, [rdi + rdi]
        sub     rax, rdx
        ret

Is that good, one might ask? No idea, IDK how to computers.

 

Looping

const halvingSum = (n: number): number => {
  let sum = 0;

  while (n !== 0) {
    sum += n;
    n = Math.floor(n / 2);
  }

  return sum;
}

Recursion

const halvingSum = (n: number): number => {
  if (n === 0) {
    return n;
  }

  return n + halvingSum(Math.floor(n / 2))
}

Tail Recursion

const halvingSum = (n: number, sum: number = 0): number => {
  if (n === 0) {
    return sum;
  }

  return halvingSum(Math.floor(n / 2), sum + n);
}
 

Here is the simple solution with Python:

def halving_sum(n): 
    # your code here
    exp = 0
    currentNumber = 0
    answer = 0
    while n >= int(pow(2, exp)):
        currentNumber = int(n / pow(2, exp))
        answer += currentNumber
        exp += 1

    return answer
 
/**
 * 
 * @param {Number} number 
 */
function halvingSum(number) {
    let total = 0;
    while (number > 0) {
        total += number;
        number = Math.floor(number / 2);
    }
    return total;
}

 

Here is a Python solution,


halvingSum = lambda n : n and (n + halvingSum(n >> 1))

print(halvingSum(25)) # output -> 47
print(halvingSum(127)) # output -> 247
 

Javascript

function halvingSum(num){
    if(num === 1){
        return 1
    }
    return num+halvingSum(Math.floor(num/2))
}
 

Haskell

halvingSum :: Int -> Int
halvingSum 0 = 0
halvingSum x = (+) x $ halvingSum $ div x 2
 

C

int halving_sum(int n) {
    if (n / 2 <= 1) return n + 1;
    return n + halving_sum(n / 2);
}
 

Learning Typescript

function halvingSum(num: number): number {
    if (num <= 1) {
        return 0;
    } else {
        return num + Math.floor(halvingSum(num/2));
    }
}
 
 

This is a simple python code.

alt code