How do you plan to solve it?
led resistor = 220, anode to GPIO
pull up RC: R = 10k, C = 10nF, RC in series, connect 5V to R and GND to C, connect GPIO 2 to node between R and C
pushbutton: one node to GND, another node to GPIO 2
The code uses edge detection and timing state machine to avoid blocking using delay().
/*Paste your code here*/
#define jump 2
#define led1 3
#define led2 4
#define led3 5
#define led4 6
uint8_t state = 1;
uint8_t button_state;
uint8_t led_pattern[][4] = {
{0b1111, 0b0000}, // state 1
{0b1010, 0b0101}, // state 2
{0b1000, 0b0100, 0b0010, 0b0001}, // state 3
{0b1100, 0b0011}, // state 4
{0b1001, 0b0110} // state 5
};
const uint8_t pattern_lengths[] = {2,2,4,2,2};
uint8_t current_pattern_index = 0;
uint8_t last_button_state = HIGH;
unsigned long last_time = 0;
const uint8_t led_delay = 500;
void setup()
{
pinMode(jump, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop()
{
unsigned long time = millis();
button_state = digitalRead(jump);
if(button_state == LOW && last_button_state == HIGH){
state++;
if(state > 5)
state = 1;
current_pattern_index = 0;
last_time = time;
}
last_button_state = button_state;
if((time - last_time) >= led_delay){
led_pattern_write(led_pattern[state-1][current_pattern_index]);
current_pattern_index++;
if(current_pattern_index >= pattern_lengths[state-1])
current_pattern_index = 0;
last_time = time;
}
}
void led_pattern_write (uint8_t pattern){
digitalWrite(led1, (pattern >> 0) & 1);
digitalWrite(led2, (pattern >> 1) & 1);
digitalWrite(led3, (pattern >> 2) & 1);
digitalWrite(led4, (pattern >> 3) & 1);
}

Add a video of the output (know more)