Rearrange Sections in a Multi-Pin Single-Array FASTLED-Setup

Here is a much more efficient version and it allows you to use all utility color functions without rewriting them.

#include <FastLED.h>

#define NUM_STRIPS 3
#define NUM_LEDS_PER_STRIP  81
#define NUM_LEDS_PER_PART 27
#define NUM_PARTS 8
#define NUM_LEDS NUM_LEDS_PER_PART * NUM_PARTS

#define BRIGHTNESS  255
#define LED_TYPE  WS2812
#define COLOR_ORDER GRB
CRGB leds[NUM_STRIPS * NUM_LEDS_PER_STRIP];

void setup() {
  // LED LIGHTING SETUP
  FastLED.addLeds<LED_TYPE, 3, COLOR_ORDER>(leds, NUM_LEDS_PER_PART * 0, NUM_LEDS_PER_PART * 3);
  FastLED.addLeds<LED_TYPE, 5, COLOR_ORDER>(leds, NUM_LEDS_PER_PART * 3, NUM_LEDS_PER_PART * 2);
  FastLED.addLeds<LED_TYPE, 6, COLOR_ORDER>(leds, NUM_LEDS_PER_PART * 5, NUM_LEDS_PER_PART * 3);
}

void loop() {
  for (int i = 0; i < NUM_LEDS; i++) {
    fill_gradient(leds, 0, CHSV(0, 255, 255), i, CHSV(160, 255, 255));
    hRemap(); // Remap so gradient works horizontally
    FastLED.show();
    fadeToBlackBy( leds, NUM_LEDS, 255);
    delay(10);
  }
}

void hRemap() {
  CRGB tempLeds[NUM_LEDS_PER_PART];

  // Horiz  -> Vert (HW) mapping
  // ------------------------------
  // Part 0 -> Part 0
  // Part 1 -> Part 3
  // Part 2 -> Part 5
  // Part 3 -> Part 1
  // Part 4 -> Part 4
  // Part 5 -> Part 6
  // Part 6 -> Part 2
  // Part 7 -> Part 7
  
  // Part 0 -> Part 0 
  //memcpy(leds, leds, NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 3 -> Part 1
  memcpy(tempLeds, &leds[NUM_LEDS_PER_PART], NUM_LEDS_PER_PART*sizeof(CRGB));
  memcpy(&leds[NUM_LEDS_PER_PART], &leds[NUM_LEDS_PER_PART*3], NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 1 -> Part 3
  memcpy(&leds[NUM_LEDS_PER_PART*3], tempLeds, NUM_LEDS_PER_PART*sizeof(CRGB));
  
  // Part 4 -> Part 4
  //memcpy(&leds[NUM_LEDS_PER_PART*4], &leds[NUM_LEDS_PER_PART*4], NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 6 -> Part 2
  memcpy(tempLeds, &leds[NUM_LEDS_PER_PART*2], NUM_LEDS_PER_PART*sizeof(CRGB));
  memcpy(&leds[NUM_LEDS_PER_PART*2], &leds[NUM_LEDS_PER_PART*6], NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 5 -> Part 6
  memcpy(&leds[NUM_LEDS_PER_PART*6], &leds[NUM_LEDS_PER_PART*5], NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 2 -> Part 5
  memcpy(&leds[NUM_LEDS_PER_PART*5], tempLeds, NUM_LEDS_PER_PART*sizeof(CRGB));

  // Part 7 -> Part 7
  //memcpy(&leds[NUM_LEDS_PER_PART*7], &leds[NUM_LEDS_PER_PART*7], NUM_LEDS_PER_PART*sizeof(CRGB));
}