• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 11:36
CEST 17:36
KST 00:36
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL22] Ro8 Preview: In A Tizzy9[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9
Community News
Weekly Cups (Sep 13-20): herO scores triple2BSL Season 236Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down1StarCraft open world shooter announced at BlizzCon101Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10
StarCraft 2
General
Balance hotfix patch 5.0.16b (July 16) Weekly Cups (Sep 13-20): herO scores triple Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool How do you feel about the StarCraft shooter announcement at BlizzCon 2026? The Death of Cheese: From a Professional Cheeser
Tourneys
Stellar Fest TWO the Moon (Dec 16-20) Sparkling Tuna Cup - Weekly Open Tournament 2026 GSTL Announcement RSL Revival: Season 6 - Qualifiers and Main Event RSL goes to London! 2026 Offline Finals Nov 21-22
Strategy
[H] ZvP Mid-Late Game: Stalkers Collossi HT
Custom Maps
[M] (2) Frigid Storage
External Content
Mutation # 544 Double Trouble The PondCast: SC2 News & Results Mutation # 543 Enhanced Defenses Mutation # 542 The Ascended
Brood War
General
BW General Discussion NaDa's Body BSL Season 23 screpdb: new Starcraft reporting tool an AI researcher's take on the ladder bot
Tourneys
[ASL22] Ro8 Day 2 [ASL22] Ro16 Group D [ASL22] Ro8 Day 1 [IPSL] IPSL is Back With Winter 26-27!
Strategy
Cliff Jump Revisited (1 in a 1000 strategy) Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation
Other Games
General Games
Nintendo Switch Thread Diablo IV Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread EVE Corporation
Dota 2
Dota 2 Champions League Season 3 Begins April 25! Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Artificial Intelligence Thread Things Aren’t Peaceful in Palestine All you football fans (soccer)!
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
Movie Discussion! [Manga] One Piece Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Recent Gifted Posts
Blogs
Gaming Intensity, Problemati…
TrAiDoS
38 yo Retired SWE loo…
PurE)Rabbit-SF
Can Bots Beat Pros?? Starcr…
namkraft
[meme] I finally understa…
LUCKY_NOOB
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
Customize Sidebar...

Website Feedback

Closed Threads



Active: 9023 users

The Big Programming Thread - Page 256

Forum Index > General Forum
Post a Reply
Prev 1 254 255 256 257 258 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Arnstein
Profile Blog Joined May 2010
Norway3381 Posts
February 25 2013 18:23 GMT
#5101
On February 25 2013 17:58 nunez wrote:
Show nested quote +
On February 25 2013 17:36 Arnstein wrote:
Yes, that's the line that is messing up! I don't know how to do this inside of a operator overload function, so I just copied some stuff from the header in the class, and also tried to copy something from the book. In the book you had leftHandSide and rightHandSide, but it didn't seem like these were declared. Then how does C++ know which one they mean?


i am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question!

you've got all the info you need to solve that exercise lined up in just the right order the institution you are attending deems best. i think you need to trace back a couple of exercises and make sure you understand what the words in the code you are compiling mean (in this context)!


Hmm, it seems like I've done it right all along, but that const messed it up for me! I just removed const, and everything was fine :D

I feel like a programming god, mohahaha!
rsol in response to the dragoon voice being heard in SCII: dragoon ai reaches new lows: wanders into wrong game
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-02-25 19:16:49
February 25 2013 19:15 GMT
#5102
Guys could you please tell me or show a link with an algorithm to find
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid
Zeke50100
Profile Blog Joined February 2010
United States2220 Posts
February 25 2013 19:26 GMT
#5103
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
Show nested quote +
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid


You could just try doing it yourself - a special algorithm shouldn't really be necessary. If you have a number at position (x, y), you can find all eight adjacent numbers with (x-1, y) - if (0, 0) is the top-left, then this is the number directly to the left - and so on. Multiply each adjacent number with the number at (x, y), and you have the product between a number and its adjacent numbers.

Add in checks to make sure you aren't trying to multiply by a number that doesn't exist (e.g., there are no numbers to the left of (0, y)), and you should be good to go.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2013-02-25 19:35:27
February 25 2013 19:33 GMT
#5104
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
Show nested quote +
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid

Write an O(n) search algorithm. Your operation would be a function like so:

int32 CheckIndex( uint32 i )
{
check left
right
up
down
diagonals
return largest
}


Call this operation on each index. Be sure to make sure you don't index out of the array on fringe elements. Then with the results just keep track of the largest returned value.
RoyGBiv_13
Profile Blog Joined August 2010
United States1275 Posts
February 25 2013 20:29 GMT
#5105
On February 26 2013 04:33 CecilSunkure wrote:
Show nested quote +
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid

Write an O(n) search algorithm. Your operation would be a function like so:

int32 CheckIndex( uint32 i )
{
check left
right
up
down
diagonals
return largest
}


Call this operation on each index. Be sure to make sure you don't index out of the array on fringe elements. Then with the results just keep track of the largest returned value.


This can be optimized with memoization since you would end up doing two multiplications per product by checking every index.

Alternatively, you can go through each direction (horizontal, vertical, diagonal left to right, and diagonal right to left, and multiply each pair one after another, saving the largest result. Compare the results from every direction, and choose the largest. If you need to know the index as well, then save that whenever you have a new maximum in a direction.


int arr[N][N];
for(i:0->N-1) {
for(j:0->N-1) {
horizontalMax = max(horizontalMax,arr[i][j]*arr[i][j+1];
verticalMax = max(verticalMax,arr[i][j]*arr[i+1][j];
//diagnonals....
}
}
//fix the edge cases as well


Any sufficiently advanced technology is indistinguishable from magic
obesechicken13
Profile Blog Joined July 2008
United States10467 Posts
February 25 2013 23:32 GMT
#5106
On February 26 2013 05:29 RoyGBiv_13 wrote:
Show nested quote +
On February 26 2013 04:33 CecilSunkure wrote:
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid

Write an O(n) search algorithm. Your operation would be a function like so:

int32 CheckIndex( uint32 i )
{
check left
right
up
down
diagonals
return largest
}


Call this operation on each index. Be sure to make sure you don't index out of the array on fringe elements. Then with the results just keep track of the largest returned value.


This can be optimized with memoization since you would end up doing two multiplications per product by checking every index.

Alternatively, you can go through each direction (horizontal, vertical, diagonal left to right, and diagonal right to left, and multiply each pair one after another, saving the largest result. Compare the results from every direction, and choose the largest. If you need to know the index as well, then save that whenever you have a new maximum in a direction.


int arr[N][N];
for(i:0->N-1) {
for(j:0->N-1) {
horizontalMax = max(horizontalMax,arr[i][j]*arr[i][j+1];
verticalMax = max(verticalMax,arr[i][j]*arr[i+1][j];
//diagnonals....
}
}
//fix the edge cases as well



You mispelled memorization
+ Show Spoiler +
jkjk
How do you think of this? Does your brain just go like "huh, big numbers... how do I reduce?"
Albeit I don't think a simple multiplication is enough to warrant such steps.
I think in our modern age technology has evolved to become more addictive. The things that don't give us pleasure aren't used as much. Work was never meant to be fun, but doing it makes us happier in the long run.
RoyGBiv_13
Profile Blog Joined August 2010
United States1275 Posts
Last Edited: 2013-02-25 23:44:04
February 25 2013 23:42 GMT
#5107
On February 26 2013 08:32 obesechicken13 wrote:
Show nested quote +
On February 26 2013 05:29 RoyGBiv_13 wrote:
On February 26 2013 04:33 CecilSunkure wrote:
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid

Write an O(n) search algorithm. Your operation would be a function like so:

int32 CheckIndex( uint32 i )
{
check left
right
up
down
diagonals
return largest
}


Call this operation on each index. Be sure to make sure you don't index out of the array on fringe elements. Then with the results just keep track of the largest returned value.


This can be optimized with memoization since you would end up doing two multiplications per product by checking every index.

Alternatively, you can go through each direction (horizontal, vertical, diagonal left to right, and diagonal right to left, and multiply each pair one after another, saving the largest result. Compare the results from every direction, and choose the largest. If you need to know the index as well, then save that whenever you have a new maximum in a direction.


int arr[N][N];
for(i:0->N-1) {
for(j:0->N-1) {
horizontalMax = max(horizontalMax,arr[i][j]*arr[i][j+1];
verticalMax = max(verticalMax,arr[i][j]*arr[i+1][j];
//diagnonals....
}
}
//fix the edge cases as well



You mispelled memorization


jkjk
How do you think of this? Does your brain just go like "huh, big numbers... how do I reduce?"
Albeit I don't think a simple multiplication is enough to warrant such steps.


Just to clarify, my solution doesn't involve memoization, it is an alternate algorithm which just doesn't need to compute it twice.

Memoizing would be taking the previously mentioned implementation, and skipping calculations that you have already done. When you take that code, and reduce it, it turns into the algorithm I mentioned. There is not a magic trick, I just don't like it when code repeats itself.
Any sufficiently advanced technology is indistinguishable from magic
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
February 26 2013 00:28 GMT
#5108
On February 26 2013 08:32 obesechicken13 wrote:
Show nested quote +
On February 26 2013 05:29 RoyGBiv_13 wrote:
On February 26 2013 04:33 CecilSunkure wrote:
On February 26 2013 04:15 darkness wrote:
Guys could you please tell me or show a link with an algorithm to find
the greatest product of two adjacent numbers in any direction (up, down, left, right, or diagonally)
? I've asked Google, but I didn't find something useful enough.

Edit: within an n x n grid

Write an O(n) search algorithm. Your operation would be a function like so:

int32 CheckIndex( uint32 i )
{
check left
right
up
down
diagonals
return largest
}


Call this operation on each index. Be sure to make sure you don't index out of the array on fringe elements. Then with the results just keep track of the largest returned value.


This can be optimized with memoization since you would end up doing two multiplications per product by checking every index.

Alternatively, you can go through each direction (horizontal, vertical, diagonal left to right, and diagonal right to left, and multiply each pair one after another, saving the largest result. Compare the results from every direction, and choose the largest. If you need to know the index as well, then save that whenever you have a new maximum in a direction.


int arr[N][N];
for(i:0->N-1) {
for(j:0->N-1) {
horizontalMax = max(horizontalMax,arr[i][j]*arr[i][j+1];
verticalMax = max(verticalMax,arr[i][j]*arr[i+1][j];
//diagnonals....
}
}
//fix the edge cases as well



You mispelled memorization
+ Show Spoiler +
jkjk
How do you think of this? Does your brain just go like "huh, big numbers... how do I reduce?"
Albeit I don't think a simple multiplication is enough to warrant such steps.

Yeah it's pretty simple. Just realize that you'll do a lot of extra calculations. Then think of ways of how to avoid.
enigmaticcam
Profile Blog Joined October 2010
United States280 Posts
February 26 2013 00:35 GMT
#5109
A simpler solution would be to, going from left to right for each row, take the current row/col number and multiply it by the number to the right, the number diagonally down and to the right, and the number directly below it. Save the highest product as you find it (and highest index combination, if you need it). You'll never do any more calculations then you need, and the code would be very simple to write.
Try
Profile Blog Joined August 2007
United States1293 Posts
February 26 2013 09:13 GMT
#5110
Hey guys,

I'm a 3rd year CS student and I'm looking to get involved with the open source community; however I have no idea how to get started. Anyone want to point me in the right direction? I know that this is a super broad topic, sorry that I can't be more specific. If it helps at all, I would be really interested in getting involved with GNU type stuff.
adwodon
Profile Blog Joined September 2010
United Kingdom592 Posts
February 26 2013 09:23 GMT
#5111
On February 26 2013 18:13 Try wrote:
Hey guys,

I'm a 3rd year CS student and I'm looking to get involved with the open source community; however I have no idea how to get started. Anyone want to point me in the right direction? I know that this is a super broad topic, sorry that I can't be more specific. If it helps at all, I would be really interested in getting involved with GNU type stuff.


Find an open source project you like and contact people involved, go on message boards / mailing lists and ask questions and ask how you can help.

Also a quick google search can always help:

http://www.makeuseof.com/tag/the-10-best-open-source-projects-you-should-be-volunteering-to-help-with/
Aphasie
Profile Blog Joined February 2010
Norway474 Posts
Last Edited: 2013-02-26 09:58:20
February 26 2013 09:57 GMT
#5112
Hi everyone,

I hope this is the right thread. Im interested in learning to program, however I have to admit I have very basic knowledge of computers in general. Ive been (forced to) using Macs (i.e. every small part, script, etc is "hidden" for regular users) untill a couple of years ago and im not at all familiar with the underlying processes in a computer. Could anybody link me a comprehensive page on what makes computers work on certain levels, what processes are ongoing, etc. I feel I need to start at the very bottom, building my knowledge of computers from scratch. Then work towards more advanced subjects like programming, etc.

Much appreciated,
Peace
Terranist
Profile Blog Joined March 2009
United States2496 Posts
February 26 2013 10:36 GMT
#5113
On February 26 2013 18:57 Aphasie wrote:
Hi everyone,

I hope this is the right thread. Im interested in learning to program, however I have to admit I have very basic knowledge of computers in general. Ive been (forced to) using Macs (i.e. every small part, script, etc is "hidden" for regular users) untill a couple of years ago and im not at all familiar with the underlying processes in a computer. Could anybody link me a comprehensive page on what makes computers work on certain levels, what processes are ongoing, etc. I feel I need to start at the very bottom, building my knowledge of computers from scratch. Then work towards more advanced subjects like programming, etc.

Much appreciated,
Peace


just read a good C book. you will learn how machines fundamentally work and get your feet wet programming at the same time. programming is actually more about logic than it is being familiar with an operating for example.
The Show of a Lifetime
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
February 26 2013 20:30 GMT
#5114
On February 26 2013 18:57 Aphasie wrote:
Hi everyone,

I hope this is the right thread. Im interested in learning to program, however I have to admit I have very basic knowledge of computers in general. Ive been (forced to) using Macs (i.e. every small part, script, etc is "hidden" for regular users) untill a couple of years ago and im not at all familiar with the underlying processes in a computer. Could anybody link me a comprehensive page on what makes computers work on certain levels, what processes are ongoing, etc. I feel I need to start at the very bottom, building my knowledge of computers from scratch. Then work towards more advanced subjects like programming, etc.

Much appreciated,
Peace

Code the Hidden Language of Computers by Charlez Petzhold. Modern C Programming 2nd Edition by K. N. King. http://www.randygaul.net/2011/11/16/i-want-to-learn-programming-but-i-know-nothing/
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-02-27 00:04:16
February 26 2013 23:50 GMT
#5115
Edit: C language

I'm disgusted at how I've implemented my code to get the greatest product of 2 adjacent numbers.

First off, an example of what I'm talking about (feel free to skip if you know what the goal is):

You have an n x n grid (2D array). You're are asked to find the largest multiplication (product) of 2 adjacent (close to each other) numbers in any direction (left, right, down, up or diagonally).

Example:
21 22 23
20 00 11
17 06 15

22 x 23 is the largest, so output would be 506.

Now my implementation:

Code:
+ Show Spoiler +


for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
/* check left */
if (!(j-1 < 0)) {
if (grid[i][j-1] * grid[i][j] > product) {
product = grid[i][j-1] * grid[i][j];
}
}
/* check right */
if (!(j+1 > n-1)) {
if (grid[i][j+1] * grid[i][j] > product) {
product = grid[i][j+1] * grid[i][j];
}
}
/* check up */
if (!(i-1 < 0)) {
if (grid[i-1][j] * grid[i][j] > product) {
product = grid[i-1][j] * grid[i][j];
}
}
/* check down */
if (!(i+1 > n-1)) {
if (grid[i+1][j] * grid[i][j] > product) {
product = grid[i+1][j] * grid[i][j];
}
}
/* check diagonally */
/* top left */
if (!(i-1 < 0 || j-1 < 0)) {
if (grid[i-1][j-1] * grid[i][j] > product) {
product = grid[i-1][j-1] * grid[i][j];
}
}
/* top right */
if (!(i-1 < 0 || j+1 > n-1)) {
if (grid[i-1][j+1] * grid[i][j] > product) {
product = grid[i-1][j+1] * grid[i][j];
}
}
/* bottom left */
if (!(i+1 > n-1 || j-1 < 0)) {
if (grid[i+1][j-1] * grid[i][j] > product) {
product = grid[i+1][j-1] * grid[i][j];
}
}
/* bottom right */
if (!(i+1 > n-1 || j+1 > n-1)) {
if (grid[i+1][j+1] * grid[i][j] > product) {
product = grid[i+1][j+1] * grid[i][j];
}
}
}
}



I'm honestly not pleased with how I wrote this. It doesn't seem clean to me. Any help/optimisation? What about 'x' adjacent numbers instead of only 2?

Thanks.

Edit: Possible step to make it more clean:

I should perhaps have at the start of the 2nd loop something like this:
leftColumn = j-1;
rightColumn = j+1;
rowAbove = i-1;

etc

Any feedback will be greatly appreciated.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
February 26 2013 23:57 GMT
#5116
Looks fine to me. You can clean things up a little by using some helper functions. You can also use std::max.

product = std::max( grid[i][j] * grid[i+1][j+1], product )
Phunkapotamus
Profile Joined April 2010
United States496 Posts
Last Edited: 2013-02-27 00:01:19
February 27 2013 00:00 GMT
#5117
On February 27 2013 08:50 darkness wrote:
I'm disgusted at how I've implemented my code to get the greatest product of 2 adjacent numbers.

First off, an example of what I'm talking about (feel free to skip if you know what the goal is):

You have an n x n grid (2D array). You're are asked to find the largest multiplication (product) of 2 adjacent (close to each other) numbers in any direction (left, right, down, up or diagonally).

Example:
21 22 23
20 00 11
17 06 15

22 x 23 is the largest, so output would be 506.

Now my implementation:

Code:
+ Show Spoiler +


for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
/* check left */
if (!(j-1 < 0)) {
if (grid[i][j-1] * grid[i][j] > product) {
product = grid[i][j-1] * grid[i][j];
}
}
/* check right */
if (!(j+1 > n-1)) {
if (grid[i][j+1] * grid[i][j] > product) {
product = grid[i][j+1] * grid[i][j];
}
}
/* check up */
if (!(i-1 < 0)) {
if (grid[i-1][j] * grid[i][j] > product) {
product = grid[i-1][j] * grid[i][j];
}
}
/* check down */
if (!(i+1 > n-1)) {
if (grid[i+1][j] * grid[i][j] > product) {
product = grid[i+1][j] * grid[i][j];
}
}
/* check diagonally */
/* top left */
if (!(i-1 < 0 || j-1 < 0)) {
if (grid[i-1][j-1] * grid[i][j] > product) {
product = grid[i-1][j-1] * grid[i][j];
}
}
/* top right */
if (!(i-1 < 0 || j+1 > n-1)) {
if (grid[i-1][j+1] * grid[i][j] > product) {
product = grid[i-1][j+1] * grid[i][j];
}
}
/* bottom left */
if (!(i+1 > n-1 || j-1 < 0)) {
if (grid[i+1][j-1] * grid[i][j] > product) {
product = grid[i+1][j-1] * grid[i][j];
}
}
/* bottom right */
if (!(i+1 > n-1 || j+1 > n-1)) {
if (grid[i+1][j+1] * grid[i][j] > product) {
product = grid[i+1][j+1] * grid[i][j];
}
}
}
}



I'm honestly not pleased with how I wrote this. It doesn't seem clean to me. Any help/optimisation? What about 'x' adjacent numbers instead of only 2?

Thanks.


For this problem you're going to have to go through the whole grid.

Optimization 1) Don't calculate the reverse of a pair you've already calculated.
Optimization 2) Only need to go through the grid once, not twice (n ^ 2) as you're doing.


int maxProduct = 0;
int maxProductX1 = 0;
int maxProductY1 = 0;
int maxProductX2 = 0;
int maxProductY2 = 0;
int curProduct = 0;
int curX = 0;
int curY = 0;

void TestProduct(int x1, int y1, int x2, int y2)
{
int product = grid[x1][y1] * grid[x2][y2];
if(product > maxProduct) {
maxProduct = product;
maxProductX1 = x1;
maxProductX2 = x2;
maxProductY1 = y1;
maxProductY2 = y2;
}
}

for each element in grid {
// only ever need to test right and "down"
// note: not checking bounds as this is pseudocode
TestProduct(curX, curY, curX + 1, curY);
TestProduct(curX, curY, curX, curY + 1);
}
"Do a barrel roll"
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-02-27 00:05:46
February 27 2013 00:02 GMT
#5118
On February 27 2013 08:57 CecilSunkure wrote:
Looks fine to me. You can clean things up a little by using some helper functions. You can also use std::max.

product = std::max( grid[i][j] * grid[i+1][j+1], product )


Sorry, I forgot to mention it is C not C++. But yeah, I guess this would work in my case:


#ifndef max
#define max( a, b ) ( ((a) > (b)) ? (a) : (b) )
#endif

#ifnef min
#define min( a, b ) ( ((a) < (b)) ? (a) : (b) )
#endif


Erm, maybe not. I'm not aware what std::max actually does.
Phunkapotamus
Profile Joined April 2010
United States496 Posts
February 27 2013 00:17 GMT
#5119
std::max is basically your macro, but is uses templates so it is typesafe.
http://www.cplusplus.com/reference/algorithm/max/
"Do a barrel roll"
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2013-02-27 00:21:27
February 27 2013 00:19 GMT
#5120
If you care about efficiency I'd imagine you'll want to make your own max function for C, so that your macros don't calculate a bunch of multiplications and array accesses redundantly.

int IntMax( int lhs, int rhs )
{
return lhs > rhs ? lhs : rhs;
}


std::max uses C++ templates:

namespace std
{
template <typename T>
bool max( T lhs, T rhs )
{
return lhs > rhs ? lhs : rhs;
}
}


There are of course other clever tricks using bit manipulations to perform min and max operations, although I wouldn't be surprised if more modern architectures have machine instructions for min and max that commonly replace std::max when std::max is used.
Prev 1 254 255 256 257 258 1032 Next
Please log in or register to reply.
Live Events Refresh
Kung Fu Cup
11:00
2026 Week 24
IntoTheiNu 893
SteadfastSC173
Rex160
CosmosSc2 91
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SteadfastSC 173
CosmosSc2 91
UpATreeSC 40
StarCraft: Brood War
Britney 47008
Shuttle 2968
Bisu 2189
Light 802
BeSt 700
Mini 402
Rush 325
Stork 303
Snow 219
hero 105
[ Show more ]
Dewaltoss 103
Shine 64
Hyun 52
Mong 39
Sexy 36
Shinee 33
PianO 33
ToSsGirL 24
HiyA 22
Sharp 22
Rock 21
sorry 21
Hm[arnc] 20
Terrorterran 17
NotJumperer 15
Aegong 13
Dota 2
Gorgc6997
qojqva2389
Dendi939
Counter-Strike
x6flipin416
Heroes of the Storm
crisheroes378
Other Games
hiko745
B2W.Neo647
ceh9332
Liquid`VortiX259
Rex160
ArmadaUGS133
Mew2King100
QueenE62
Organizations
Dota 2
PGL Dota 2 - Main Stream12262
StarCraft: Brood War
Afreeca ASL 352
StarCraft 2
TaKeTV 12
StarCraft: Brood War
Kim Chul Min (afreeca) 10
[ Show 14 non-featured ]
StarCraft 2
• mYiSmile142
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• C_a_k_e 6431
• WagamamaTV234
League of Legends
• Nemesis2934
• TFBlade939
Other Games
• Shiphtur94
Upcoming Events
The PondCast
18h 24m
Replay Cast
1d 8h
Korean StarCraft League
2 days
CranKy Ducklings
2 days
GSL
3 days
Yamato Cup
3 days
Replay Cast
4 days
Afreeca Starleague
4 days
Soma vs Jaedong
WardiTV Weekly
4 days
Sparkling Tuna Cup
5 days
[ Show More ]
Afreeca Starleague
5 days
Leta vs Soulkey
PiGosaur Cup
6 days
Kung Fu Cup
6 days
Liquipedia Results

Completed

Super Anchor Qualifying S3
Blizzard Classic Cup 2026
Big Dog Cup 2026 Div 1

Ongoing

ASL Season 22
CSL 2026 AUTUMN (S22)
Acropolis #5
Acropolis #5 - GSA
Calamity Invitational
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSB
Acropolis #5 - GSC
BSL Season 23
SC4ALL II: Brood War
BSL 23: Non-Korean Championship
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
Custodian Cup
Copium Cup
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.